4/3~4/4两日总结
引用变量的强制类型转换
- 只能在具有继承关系的2个类型之间进行
- 如果试图把一个父类实例转换成子类类型,则该变量必须编译时类型是父类类型,运行时类型是子类类型(否则引发ClassCastException异常)
- 把子类对象赋给父类引用变量总是行得通的
何时使用继承
- 子类需要增加额外的变量
- 子类需要增加自己独有的行为方式
程序的复用
1.继承
继承是直接在子类中使用从父类中继承得到的方法
2.组合
组合是把需要复用的方法所在的类作为新类的成员变量组合进来用户看到的是新类的方法,而不能看到被组合的旧类对象
组合实现程序复用
首先在需要复用程序的类里面创建一个private修饰的被复用的类的对象
然后在需要复用程序的类里面定义构造器,以创建的对象作为参数(如 public Dog(Animal a))
再然后就定义复用的方法,直接调用被复用的类的对象即可
最后在main方法中使用的时候,先创建被复用的类的对象,再创建需要复用的类的对象并且前面写构造器时指定了需要一个被复用程序的类的对象作为参数。
再调用这个对象的方法就行了
抽象类抽象方法
抽象类和抽象方法必须使用abstract修饰符来修饰
抽象方法不能有方法体
抽象类不能有实例化
抽象方法:public abstract void test ()
普通方法:public void test() {}
抽象方法没有花括号,在数据类型前要加abstract修饰
抽象方法就是用来被继承的,在子类中重写其方法
创建对象时: 抽象类名 变量名 = new 子类名
然后就能直接使用p来调用被重写后的方法