【学习笔记】第七章 复用类

复用类的两种方式:
  1. 组合:在新类中包含现有类。
  2. 继承:新类继承自现有类。

初始化基类

class Father {
    public Father() {
        System.out.println("Father");
    }
}

class Son extends Father {
    public Son() {
        System.out.println("Son");
    }
}

public class Demo {
    public static void main(String[] args) {
        Son s = new Son();
    }
}
/*Output:
Father
Son
*/

子类对象生成时会创建基类对象并包含在子类对象中。
如果基类没有不含参的构造方法则在子类构造方法的第一行用super关键字调用父类构造方法。

子类对象继承自父类对象,希望访问父类的成员及方法,那么创建父类的对象是最好的选择。子类对象不可能凭空产生,需要父类对象先生成,先有父才有子。


代理

在新类中包含现有类对象,并且保留现有类的方法(重新封装)。


如何在组合和继承中选择

组合:在新类中希望借助现有类的功能来完成新类的功能。(has-a)
继承:希望开发出新类的一个特殊版本,拓展其功能。(is-a)


向上转型

将子类转型为其父类或祖类。一个方法的参数可以接受该参数对应类的子类。


final关键字

final常量:一般为基本类型,一旦赋值,其值不可改变。
final引用:该引用只能指向初始化时的对象,不能再指向其他对象。
final参数:在该方法中,无法修改该参数引用指向的对象。
final方法:该方法无法被重写。
final类:不可被继承。


继承与初始化

当当前类被加载时,若当前类继承自某个父类,则加载其父类。
初始化顺序:静态变量/静态代码块 - 匿名代码块 - 成员变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值