首页 > 学院 > 开发设计 > 正文

类与类的关系

2019-11-10 16:55:58
字体:
来源:转载
供稿:网友

继承关系

父与子的关系

首先,允许多层继承但不允许多重继承(一继多) 子类本质上是包含了父类的,下面这张图片从内存的角度解释了这一点 这里写图片描述 值得一提的是构造它们的时候走构造函数的顺序: 在构造子类对象的时候要先构造出一个父类对象,也就是说,先执行父类的无参构造或者系统帮忙添加的无参构造,再走子类的构造。 假如父类没有无参构造却有有参构造,系统不会帮忙添加了无参版本了,也就会报错,这时候子类可以通过super去显式调用父类有参版本的构造。

使用——多态现象

多态涉及的访问规则看似很复杂,但总结起来就是:一个子类“被当作父类”使用时就只能访问父类有的成员和方法,其中被重写覆盖的方法用覆盖后的版本,注意静态方法不会被覆盖。向下转型之后就是一个普通类。

抽象类和接口的继承

抽象的继承,规则本身没有什么好说的,那就是有一些共性被抽象提炼出来了,作为抽象的方法或者类,一层层继承下来我们可以任意给它具体化。 接口(interface)是一种特殊的抽象类(abstract class),区别在于:接口限定的更死,只有常量和抽象方法;接口跟它的子类是实现(implement)的关系,也是特殊的继承(extends)。 允许:1.接口继承接口的多层继承和继承多个接口的多重继承           2.同时继承类和多个口

嵌套关系

成员内部类

嵌套在类中(方法外),本质是成员(所以可以static),所以它访问外部类成员就像其他普通成员一样平等。外部类访问内部类对象得先创造出它的对象。

方法内部类

嵌套在方法中,只能访问局部的final变量。 原因在于局部变量会随着方法调用完毕而消失,但内部类还在堆中暂时未被回收。加上final以后,内部类中变量的调用就会被替换为常量,否则到了回收内部类的时候就找不到这个变量。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表