多态的简介
多态的概念:
某一个事物,在不同的时刻表现不同的状态。
多态的前提:
1.有继承关系
2.要有方法重写。 其实没有也是可以的,但是如果没有这个就没有意义。
3.要有父类引用指向子类对象。
多态的访问特点:
成员变量:编译看左边,运行看左边。
成员方法:编译看左边,运行看右边
构造方法:创建子类对象的时候,会访问父类的构造方法,对父类的数据进行初始化
静态方法 : 编译看左边,运行看左边
多态的好处与弊端
优点:
- 提高了代码的维护性(继承保证)
- 提高了代码的扩展性(由多态保证)
弊端:
- 不能使用子类特有的功能
需要向下转型,才能使用子类中特有的功能。
看以下代码:
public class Test {
public static void main(String[] args) {
Animal an = new Cat();
an.name = "Tom";
an.age = 10;
System.out.println(an.name + "==" + an.age);
an.eat();
Cat cat = (Cat) an;// 向下转型
cat.Sleep();
an = new Dog;
an.name = "二哈";
an.age = 5;
System.out.println(an.name + "==" + an.age);
an.eat();
((Dog) an).Sleep(); //向下转型的简写
}
}
abstract class Animal {
String name;
int age;
abstract void eat();
}
class Cat extends Animal {
@Override
void eat() {
System.out.println("猫吃鱼干");
}
public void Sleep() {
System.out.println("猫躺着睡觉");
}
}
class Dog extends Animal {
@Override
void eat() {
System.out.println("狗吃骨头");
}
public void Sleep() {
System.out.println("狗趴着睡觉");
}
}