黑马程序员技术交流社区
标题:
再换成另一种复杂的代码用上函数的继承,多态接口
[打印本页]
作者:
千曲生
时间:
2014-5-28 00:50
标题:
再换成另一种复杂的代码用上函数的继承,多态接口
动物园里有很多种动物:
比如说,狗,猫等。狗有姓名和年龄,猫也有姓名和年龄。狗有跑步的方法,猫也有跑步的方法。而且都仅仅是跑步。
狗有吃饭的方法,猫也有吃饭的方法。只不过,狗吃骨头,猫吃鱼。用更复杂的代码实现:
abstract class Animal//定义抽象的动物类,对狗和猫的行为抽象
{
public abstract void Animal(String name,int age);
//定义含参构造函数
//String name;
//int age;
public abstract void eat();//抽象函数不必有功能模块
public abstract void run();
}
class dog extends Animal//狗是动物的子类
{
public void Animal(String name ,int age)
//复用父类含参构造函数
{
System.out.println("我家小狗名叫"+name);
System.out.println("我家小狗年龄是"+age);
}
public void eat()//对父类的抽象进行实例化
{
System.out.println("狗吃骨头");
}
public void run()
{
System.out.println("狗会奔跑");
}
}
class cat extends Animal//猫是动物的子类
{
public void Animal(String name ,int age)
//复用父类含参构造函数
{
System.out.println("我家小猫名叫"+name);
System.out.println("我家小猫年龄是"+age);
}
public void eat()//对父类的抽象进行实例化
{
System.out.println("猫吃鱼");
}
public void run()
{
System.out.println("猫会跳");
}
}
/*class AnimalTest
{
public static void Function(Animal a)
{
a.eat();
a.run();
}
public static void main(String[] args)
{
Function(new cat());
Function(new dog());
}
}*/
class AnimalTest
{
public static void Function(Animal a)
//定义功能函数
{
if (a instanceof cat)//判断是哪种动物
{
cat c=(cat)a;
//强制将父类的引用,转成子类类型,向下转型。
c.Animal("咪咪",12);
c.run();
c.eat();
}
else if(a instanceof dog)
{
dog d=(dog)a;
//强制将父类的引用,转成子类类型,向下转型。
d.Animal("QQ仔",10);
d.run();
d.eat();
}
}
public static void main(String[] args)
{
/*
Animal a=new cat();// 类型提升,向上转型
a.eat();
//如果想要调用猫的特有方法时,如何操作!
//强制将父类的引用,转成子类类型,向下转型。
cat c=(cat)a;
c.maimeng();
*/
Function(new cat());//匿名内部类
Function(new dog());
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2