java三大特性:封装、继承、多态
多态:一个命令、多种形态
引用变量的两种类型
编译时类型
运行时类型
多态存在的三个必要条件
1. 继承
2. 重写父类方法
3. 父类引用指向子类的对象
向上转型
1. 父类只能调用自己已有的属性和方法,不能调用子类的
2. 当子类的属性隐藏了父类的属性,向上转型使用的还是父类的属性。
3. 当子类重写了父类方法,向上转型调用的就是子类的方法
4. instanceof :判断这个对象是否是类的实例
抽象类(abstract)
避免子类设计的随意性
特性
1. 抽象方法必须写在抽象类中
2. 抽象方法没有方法体
3. 抽象类中可以有普通方法、属性、构造器,抽象类不能被实例化,构造器只能被子类调用
4. 抽象类用来被继承
5. 抽象方法必须被子类实现
复制代码
作业:创建一个抽象类Rodent(啮齿动物):Mouse(老鼠),Gerbil(鼹鼠),Hamster(大颊鼠)这样的继承层次结构。在基类中,提供对所有的Rodent都通用的方法,在子类中,根据特定的Rodent类型覆盖这些方法,以便执行不同的行为。创建一个Robent数组,填充不同的Rodent类型,然后调用基类方法,观察发生什么情况。
public static void main(String[] args) {
Rodent r=new Mouse();
r.eat();
Rodent[] x={new Mouse(),new Gerbil(),new Hamster()};
for (int i = 0; i <x.length ; i++) {
x[i].eat();
}
}
}
abstract class Rodent{
public abstract void eat();
}
class Mouse extends Rodent{
public void eat(){
System.out.println("偷吃");
}
}
class Gerbil extends Rodent{
public void eat(){
System.out.println("好吃");
}
}
class Hamster extends Rodent{
public void eat(){
System.out.println("快吃");
}
复制代码