[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图

类和类之间的关系:

  • 泛化关系:继承。
  • 实现关系: 类实现接口。
  • 关联关系:在当前类中含有其他类的引用。
    下例中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);
    
    }
}

猜你喜欢

转载自www.cnblogs.com/coding-gaga/p/10467199.html
今日推荐