您的位置:首页 > 大数据 > 人工智能

151220DuoTaiDemo多态详解1

2016-01-05 09:23 411 查看
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("私聊!");

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: