/*
多态的好处:
A:提高了代码的维护性(继承保证)
B:提高了代码的扩展性(由多态保证)
猫狗案例代码
*/
class Animal{
public void eat(){
System.out.println("eat");
}
public void sleep(){
System.out.println("sleep");
}
}
class Dog extends Animal{
public void eat(){
System.out.println("狗吃骨头");
}
public void sleep(){
System.out.println("狗站着睡觉");
}
}
class Cat extends Animal{
public void eat(){
System.out.println("猫吃鱼");
}
public void sleep(){
System.out.println("猫趴着睡觉");
}
}
class Pig extends Animal{
public void eat(){
System.out.println("猪吃白菜");
}
public void sleep(){
System.out.println("猪侧着睡觉");
}
}
//针对动物操作的工具类
class AnimalTool{
private AnimalTool(){}
/*
//调用猫的功能
public static void useCat(Cat c){
c.eat();
c.sleep();
}
//调用狗的功能
public static void useDog(Dog d){
d.eat();
d.sleep();
}
//调用猪的功能
public static void usePig(Pig p){
p.eat();
p.sleep();
}
*/
public static void useAnimal(Animal a){
a.eat();
a.sleep();
}
}
class DouTaiDemo2{
public static void main(String[] args){
//我喜欢猫,就养了一只
Cat c = new Cat();
c.eat();
c.sleep();
//我很喜欢猫,所以,又养了一只
Cat c2 = new Cat();
c2.eat();
c2.sleep();
//我特别喜欢猫,又养了一只
Cat c3 = new Cat();
c3.eat();
c3.sleep();
//...
System.out.println("------------");
//问题来了,我养了很多只猫,每次创建对象可以接受的
//但是呢?调用方法,创建对象是一样的。仅仅是对象名不一样。
//准备用方法改进
//调用方式改进版
//useCat(c);
//useCat(c2);
//useCat(c3);
//AnimalTool.useCat(c);
//AnimalTool.useCat(c2);
//AnimalTool.useCat(c3);
AnimalTool.useAnimal(c);
AnimalTool.useAnimal(c2);
AnimalTool.useAnimal(c3);
System.out.println("------------");
//我喜欢狗
Dog d = new Dog();
Dog d2 = new Dog();
Dog d3 = new Dog();
//AnimalTool.useDog(d);
//AnimalTool.useDog(d2);
//AnimalTool.useDog(d3);
AnimalTool.useAnimal(d);
AnimalTool.useAnimal(d2);
AnimalTool.useAnimal(d3);
System.out.println("------------");
//我喜欢宠物猪
//定义一个猪类,它要继承自动物,提供两个方法,并且还得在工具类中添加该类方法调用
Pig p = new Pig();
Pig p2 = new Pig();
Pig p3 = new Pig();
//AnimalTool.usePig(p);
//AnimalTool.usePig(p2);
//AnimalTool.usePig(p3);
AnimalTool.useAnimal(p);
AnimalTool.useAnimal(p2);
AnimalTool.useAnimal(p3);
System.out.println("------------");
//我喜欢宠物狼,老虎,豹子...
//定义对应的类,继承自动物,提供对应的方法重写,并在工具类添加方法调用。
//前面几个必须写,没有意见的
//但是,工具类每次都改,麻烦不
//我在就想,能不能不改
//太简单:把所有的动物都写上。问题是名字是什么呢?到底哪些需要加入呢?
//改用另一种解决方案
}
/*
//调用猫的功能
public static void useCat(Cat c){
c.eat();
c.sleep();
}
//调用狗的功能
public static void useDog(Dog d){
d.eat();
d.sleep();
}
*/
}
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
面向对象之多态
多态中成员的访问特点成员变量:编译看左边,运行看左边----即看父类成员方法:编译看左边员方法可以重写)...
多态 成员 成员方法 子类 成员变量 -
python scipy signal 生成 Gaussian noise
如何让你的python程序,在未来某个时间去做一件事情如何让你的程序在未来某个时间去做一件事情呢,注意,这不是简单的闹钟,简单的闹钟就像我们起床,时间设置到每天的早上7点,这是在24小时内的定时,而现在要做到更大的范围,超过24小时,扩大到月,甚至年,那么该如何做呢? 其实一旦实现了年,那么还有哪个时间不能定时呢?也许有人说,上到年,下能到毫秒吗?其实毫秒跟24小时内的定时一样,用的是dateti
python信号signal python如何实现闹钟 python如何实现定时功能 python如何定时 python datetime