[Java学习]面向对象-package;内部类;UML图表示六种关系

package 软件包

  • 类名前加入命名空间(包),解决命名冲突问题。
  • 定义格式:公司域名倒叙.项目名.模块名;

    package语句写在文件第一行

  • 使用import语句导入package

    java.lang; 软件包下的所有类系统自动导入。

  • 编译

    javac -d 生成路径 java源文件路径

  • 运行

    java 完整类名

内部类

基本

  • 定义:类里面的类。
  • 好处:内部类可以访问其外部类的私有数据。
  • 分为 :静态内部类,成员内部类,局部内部类,匿名内部类

静态内部类

  • 调用静态内部类的静态方法:

    OuterClass.InterClass.methods1();

  • 调用静态内部类的成员方法:
InnerClass inner=new OuterClass.InnerClass();
inner.methods2();

匿名内部类

  • 定义:没有名字的类。
  • 优点:少定义一个类。
  • 缺点:无法重复使用。

未采用匿名内部类代码

package com.test.jinhj;

public class SubClass{

        public static void testM(CustomerService cs) {
                cs.logout();
        }

        public static void main(String[] args) {
                testM(new CustomerService());
        }

}

interface CustomerService{   
        //退出系统
        void logout();
}



class CustomerServiceImpl implements CustomerServerce{

        public void logout() {

                System.out.println("退出。");

        }

}

采用匿名内部类代码

package com.test.jinhj;



public class SubClass{

        public static void testM(CustomerService customerService) {

                customerService.logout();

        }

        

        public static void main(String[] args) {

                //整个"CustomerService(){}"称为匿名内部类

                testM(new CustomerService() {

                        public void logout() {

                                System.out.println("exit!");

                        }

                });

        }

}



interface CustomerService{

        //退出系统

        void logout();

}

UML图、六种类和类之间的关系

类和类之间的关系:

  • 泛化关系:继承。

    UML:实线空心箭头。

  • 实现关系: 类实现接口。

    UML:虚线空心箭头。

  • 关联关系:在当前类中含有其他类的引用。

    下例中Me和Friend就是关联关系

public class Me{
        String name;
        
        Friend f;
        
        Me(Friend f){
                this.f=f;
        }
}

public class Friend{
        String name;
        String addr;
        
        Friend(String addr){
                this.addr=addr;
        }
}

public class Test{
        public static void main(String[] args){
        
        Friend f=new Friend("北京");

        //当创建完Me的对象后,关联关系已建立,Me对象m中已有Friend对象f的内存地址。
        Me m=new me(f);
        
        System.out.println(m.f.addr);
        
        }
}

UML:实线箭头。

  • 依赖关系:当前类中的局部变量是另一个类的引用,两者是依赖关系。

    UML:虚线箭头。

  • 聚合关系:聚合关系是一种关联关系,是整体和部分的关系,两者的生命周期相互不影响。

    UML:实线空心箭头指向整体。

  • 合成关系:合成关系是一种关联关系,是整体和部分的关系,整体的关系决定部分的生命周期。

    UML:实线实心箭头指向整体。