03.12
父类强制转型子类
前面是变量,后面是类型 instanceof
找对象
分析有没有共同特性
用封装设置属性
使用多态的地方
不知道产生的是什么对象,在运行的时候返回的时候才知道产生的对象
1.动态绑定
2.参数的多态
3.异构集合
异构集合,在一个数组里面,可以存放不同的对象
数组里面存的是地址
抽象
抽象方法只需要定义,不需要实现
疑问?
1.抽象类和普通类区别
2、为什么要有抽象类
特点:
1.在类的前面加上abstract,当前类就变成抽象类
如果一个类里面定义抽象方法,当前类必须是抽象类
2.在抽象类里面也可以定义普通方法
3.抽象方法里面必须有abstract来修饰才代表抽象方法
区别
1、抽象类里面可以有抽象方法,也可以有普通方法,普通类只能有普通方法
2、
抽象类使用的场景:
(1)、在某些场景下,父类只知道子类包含哪些行为,但是不知道行为的具体实现是什么样的,这个时候就应该定义为抽象类。
(2)、从多个类中去抽象一个父类出来,利用这个父类作为子类的模板,从而避免自己的随意设计。
子类继承父类,如果父类里面有抽象方法,子类必须要重写;父类成员可以重写,可以不重写
一个抽象类去继承另外一个抽象类,抽象方法可以不用重写
抽象类不能直接实例化
子类调用父类属性比较频繁,可以设置成public
类只能继承一个父类,无法实现多继承
接口
接口是抽象方法和常量定义的一个集合。
从本质上来讲,接口是一种特殊的抽象类,接口中所定义的方法全是抽象方法,所定义的变量全都是常量。
语法:
接口是一种特殊抽象类
规定接口里面的所有方法都是抽象方法,interface前面默认加上了abstract
在接口里面,所有方法都是抽象方法,省略方法前面abstract,也可以省略访问修饰符,默认public
public interface IGame{ //定义常量 public static final double PI=3.14; int m=10;//public static final int m=10; //抽象方法 public abstract void add(){ } }
接口定义常量 常量名必须大写
接口的作用是什么?
1、接口里面定义的方法全都是抽象方法,子类实现接口的实现,必须实现所有的抽象方法,对子类的方法做了一个约束。不能让子类乱写方法,统一在接口中。
2、解决java中一个类只能单继承的问题,一个类可以实现多个接口,弥补以前单继承不足的问题。
实现接口,实现接口也是一种继承关系。
接口的使用
1、一个类可以实现多个接口,完成多重继承
2、接口中声明的属性默认就是public static final 类型 的
3、接口中只能定义抽象方法
4、接口可以继承其他接口,一个接口可以继承多个接口
共享用抽象
约束子类的行为用接口
接口继承接口