Think In Java 笔记3 Reusing Classes

Reusing Classes
通过创建新的类,不是从头创建,可以用现有的类
用这个类但是不污染这个类的已存在的code达到这个目的的方法有两种
1. 组合(composition):创建这个类通过创建已有的类的对象,这个类就相当于之前的类的组合
2. 继承(inheritance):创建这个类继承已有的类
父类(基类base class)的方法必须是public或者是private的不然子类如果不是同一个package的就不能访问
3. 在创建子对象的时候,隐含创造了一个父类的对象在子类中,这时候会调用父类的constructor
4. 如果要调用有参数的父类的constructor,要在子类的constructor函数里面最开头写上super(args);
5. 授权Delegation:就是在一个类中创建一个对象,然后写方法,这个方法是调用那个对象的方法,有继承有点像,这样的好处是,你可以只调用其中部分的方法,而不是全部实现。

public class SpaceShipDelegation {
private String name;
private SpaceShipControls controls =new SpaceShipControls();
public SpaceShipDelegation(String name) {
this.name = name;
}
// Delegated methods:
public void back(int velocity) {
  controls.back(velocity);
}
}
  1. try finally:无论try是怎么离开的,finally一定会执行
try {

}
finally{

}
  1. 和C++一样,先创建的东西最后销毁
    比如:先创建 shape 在创建 rect
    先销毁 rect 再销毁 shape
  2. 和C++不一样,java在子类中重载(新加)了方法之后,父类的方法没有隐藏,还是可以调用的,C++是会隐藏的。
  3. Overload是重载相当于新加一个函数,参数不一样的,名字一样的
  4. Override是覆盖,相当于函数名字一样,参数一样,就是重写父类的方法
  5. Composition VS inheritance :问问自己自己新写的类要不要upcast to 基类。
  6. final关键词相当于c中的const,可以先申明blank final就是先不赋值,然后在constructor中赋初值。
  7. 对于private方法,自动隐含添加final修饰词
  8. 如果一个方法用了final那就不能重写了(override)
  9. 一个类如果用了final就不能被继承了
  10. 一个类如果有继承的时候,初始化是这样的顺序
    1) 所有static的变量进行初始化,从父类的开始到子类的结束
    2) 父类正常变量被初始化按定义顺序
    3) 父类constructor被调用
    4) 子类正常变量被初始化按定义顺序
    5) 子类constructor被调用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值