151220DuoTaiDemo多态详解1

package java151220;


public class DuoTaiDemo {
public static void main(String[] args) {


/*
* Cat cat =new Cat(); cat.eat(); Cat cat1 =new Cat(); cat1.eat();

* Dog dog =new Dog(); dog.eat(); Dog dog1 =new Dog(); dog1.eat();
*/
// function(new Cat());
// function(new Dog());
// function(new Pig());


Animal animal = new Cat();// 类型 提升 byte b =2; int x=b;
// 向上转行
animal.eat();
// 如果想调用猫的特有方法


Cat cat = (Cat) animal;// 向下转行
cat.catchMouse();
}


/*
* public static void function(Cat cat) { cat.eat(); }

* public static void function(Dog dog) { dog.eat(); }
*/
public static void function(Animal animal) {
animal.eat();
if (animal instanceof Cat) {
Cat cat = (Cat) animal;


} else if (animal instanceof Dog) {
Dog dog = (Dog) animal;
dog.kanHome();
} else if (animal instanceof Pig) {
Pig pig = (Pig) animal;


}
}
}


// 多态的体现:父类的引用指向了自己的子类对象,父类的引用也可以接受自己的子类的对象
// 多态的前提必须是类与类有关系,要么继承,要么实现
// 多态的好处,多态的出现大大的提高程序的扩展性
// 多态的弊端: 提高了扩展性,但是只能使用父类的引用访问父类中的成员


// 多态的应用
//多态中 成员的特点
abstract class Animal {
abstract void eat();
}


class Cat extends Animal {


@Override
void eat() {
System.out.println("吃鱼");
}


public void catchMouse() {
System.out.println("抓老鼠!");
}
}


class Dog extends Animal {


@Override
void eat() {


System.out.println("吃骨头!");
}


public void kanHome() {
System.out.println("看家!");
}
}


class Pig extends Animal {


@Override
void eat() {
System.out.println("私聊!");
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值