类与类的关系

继承关系

父与子的关系

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

使用——多态现象

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

抽象类和接口的继承

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

嵌套关系

成员内部类

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

方法内部类

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值