Java——多態(tài)
目錄
概述
/*
動物類(父類)
*/
public class Animal {
public void eat(){
System.out.println("動物吃什么");
}
}
/*
貓類(子類)
*/
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("貓吃魚");
}
}
/*
測試類
*/
public class AnimalDemo {
public static void main(String[] args){
//父類引用指向子類對象
Animal a = new Cat();
}
}
成員訪問特點
/*
動物類(父類)
*/
public class Animal {
public int age = 20;
public void eat() {
System.out.println("動物吃什么");
}
}
/*
貓類(子類)
*/
public class Cat extends Animal {
public int age = 2;
public int weight = 10;
@Override
public void eat() {
System.out.println("貓吃魚");
}
public void playGame() {
System.out.println("貓捉老鼠");
}
}
/*
測試類
*/
public class AnimalDemo {
public static void main(String[] args) {
//父類引用指向子類對象
Animal a = new Cat();
System.out.println(a.age);
//System.out.println(a.weight);
System.out.println("------");
a.eat();
//a.playGame();
}
}
優(yōu)缺點
/*
動物類(父類)
*/
public class Animal {
public void eat() {
System.out.println("動物吃什么");
}
}
/*
貓類(子類)
*/
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("貓吃魚");
}
}
/*
小狗類(子類)
*/
public class Dog extends Animal {
@Override
public void eat() {
System.out.println("狗吃骨頭");
}
public void lookDog() {
System.out.println("狗看門");
}
}
/*
動物操作類
*/
public class AnimalOperator {
public void useAnimal(Animal a) {
a.eat();
// a.lookDog();//不能使用子類的特有功能
}
/*
public void useAnimal(Cat c) {
c.eat();
}
public void useAnimal(Dog d) {
d.eat();
}
*/
}
/*
測試類
*/
public class AnimalDemo {
public static void main(String[] args) {
AnimalOperator ao = new AnimalOperator();
Cat c = new Cat();
ao.useAnimal(c);
Dog d = new Dog();
ao.useAnimal(d);
}
}
多態(tài)中的轉(zhuǎn)型
向上轉(zhuǎn)型
從子類到父類,父類引用指向子類對象
向下轉(zhuǎn)型
從父類到子類,父引用轉(zhuǎn)為子類對象
/*
動物類(父類)
*/
public class Animal {
public void eat() {
System.out.println("動物吃什么");
}
}
/*
貓類(子類)
*/
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("貓吃魚");
}
public void playGame() {
System.out.println("貓捉老鼠");
}
}
/*
測試類
*/
public class AnimalDemo {
public static void main(String[] args) {
//父類引用指向子類對象
//向上轉(zhuǎn)型
Animal a = new Cat();
a.eat();
System.out.println("------");
//向下轉(zhuǎn)型
Cat c = (Cat) a;
c.eat();
c.playGame();
}
}

評論
圖片
表情



