您的位置:首页 > 编程语言 > Java开发

Java学习笔记——多态

2018-02-06 00:15 204 查看
2018.2.5
Java多态的学习
1.多态存在的前提:存在继承关系;子类重写父类的方法(@Override);父类的引用指向子类。
2.例如,父类Animal存在一个方法eat(),子类Dog继承自父类,重写了父类的eat()方法。
public class Animal {
public int age = 100;
public void eat(){
System.out.println("Animal eating...");
}
}

class Dog extends Animal{
public int age = 10;

@Override
public void eat(){
System.out.println("Dog eating...");
}

public void bark(){
System.out.println("Dog barking...");
}

}


测试类:
//父类引用子类对象,只对子类的重写方法有效
//若父类中没有bark()方法,则父类引用子类对象报错

//弊端:父类引用子类的对象,不能使用子类对象的特有数据/功能
//解决:强制类型转换
public class MainDemo {
public static void main(String[] args){
Animal a = new Dog();
Dog d ;
//强制转换a的类型为Dog
d = (Dog)a;
a.eat();
System.out.println(d.age);
//a.bark();
d.bark();
System.out.println(d.age);
}
}

结果:
Dog eating...
10
Dog barking...
10
可以看出,a是一个指向子类Dog的父类引用,且a调用eat()时是调用子类重写的实现,而不是父类的实现。

补充:https://www.cnblogs.com/liujinhong/p/6003144.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java基础