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("私聊!");
}
}
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("私聊!");
}
}
相关文章推荐
- Thread 常搞混的几个概念sleep、wait、yield、interrupt
- AOJ-0531 Paint Color
- 2016 Nike Air Max 90
- 直接插入排序StraightInsertSort
- [转] AIX lv 4k偏移量
- HDU 1082.Matrix Chain Multiplication【栈的应用+矩阵乘法规则】【1月4】
- 11. Container With Most Water
- IBM小机P520 AIX
- supervisorctl报错"error: <class 'socket.gaierror'>, [Errno -2] Name or service not known"的解决方法
- 出现( linker command failed with exit code 1)错误总结(http://blog.csdn.net/hengshujiyi/article/details/21182813)
- Contains Duplicate 数组中是否包含重复元素
- 行为树-学习笔记(2)-rain插件做简单的敌人AI(1)
- ORA-04098: trigger 'SYS.XDB_PI_TRIG' is invalid and failed re-validation
- 人工智能
- POJ3250 Bad Hair Day(单调栈)
- asiainfo亚信——实习日记
- 2048游戏-AI程序算法分析
- Pairing heap
- (实训第一天)讲一讲main函数返回值、参数argc、argv、并模仿登录功能
- 记录遇到的各种rails报错