类与类之间的关系+内部类

类与类的关系主要有以下三种:
继承,关联(可细分为聚集,组合),依赖。
继承:是指一个类继承另一个类的功能并可以增加它自己新功能的能力,通过关键字extends标记
实现:是指一个class类实现一个或多个interface接口,实现是类与接口中最为常见的关系,通过关键词implements实现
依赖:类A使用了类B,表现在代码层,B作为参数被A在某个method方法中使用
关联:可以是单向的,双向的。表现在代码层次,为被关联类以类的属性形式出此在关联类A中,也可能是关联类A引用了关联类B的全局变量。
聚合是关联关系的一种特例,体现的是整体与部分的关系,即has-a关系。此时部分和整体之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体,也可以为多个整体共享。如计算机与CPU,公司与员工的关系等。
组合:也是关联关系的一种特例,他体现的是一种contains-a关系,这种关系比聚合强,也称强聚合。它同样体现整体与部分的关系,但此时整体与部分不可分,整体的生命周期结束也意味着部分的生命周期结束。比如人与人的大脑。
后几种关系所表现的强弱程度:组合>聚合>关联>依赖
内部类
定义:在Java中允许一个类的定义位于另一个类的内部,前者称为内部类
1.内部类与外层封装它的类之间存在逻辑上的所属关系
2.Inner class一般定义与它的类或语句块内,在外部引用它时必须给出完整的名称。Inner class的名称不能与包含它的名称
3.Inner class可以包含它的类的静态和实例成员变量,也可以使用它的所在方法的局部变量
内部类的共性
1.内部类仍是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但前面冠以外部类的类名和$。
2.内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部类可以自由访问外部类的成员变量,不论是否是private
3.内部类声明成静态的,就不能随便访问外部类的成员变量了,只能访问外部类的静态成员变量
内部类分为四种:静态内部类,成员内部类,方法内部类,匿名内部类
内部类举例
在这里插入图片描述
在这里插入图片描述
匿名内部类:没有名字的内部类
下列情况建议使用内部类:
1.只用到类的一个实例
2.类在定义后立刻用到
3.类非常小
4.给类命名并不会导致你的代码更容易被理解
使用匿名内部类时需要遵守的原则:
1.匿名内部类不能有构造方法(类名{})
2.匿名类内部不能定义任何静态(static修饰)成员,方法和类
3.匿名内部类不能是public,protect,private和static
4.只能创建内部类的一个实例
5.一个匿名内部类一定是在new的后面,用其隐含实现或一个类
6.因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效

猜你喜欢

转载自blog.csdn.net/weixin_40645193/article/details/106989270