class Pet
{
private String name;
Pet(String name)
{
this.name = name;
}
void enjoy()
{
System.out.println("宠物的叫声");
}
}
class Dog extends Pet
{
private String furColor;
Dog(String name,String furColor)
{
super(name);
this.furColor = furColor;
}
void enjoy()
{
System.out.println("狗叫声");
}
}
/*class Cat extends Pet
{
private String eyeColor;
Cat(String name,String eyeColor)
{
super(name);
this.eyeColor = eyeColor;
}
void enjoy()
{
System.out.println("猫叫声");
}
}*/
class Bird extends Pet
{
private String wingColor;
Bird(String name,String wingColor)
{
super(name);
this.wingColor = wingColor;
}
void enjoy()
{
System.out.println("鸟叫声");
}
}
class Lady
{
private String name;
private Pet p;
Lady(String name,Pet p)
{
this.name = name;
this.p = p;
}
void myPetEnjoy()
{
p.enjoy();
}
}
public class TestPoly
{
public static void main(String[] args)
{
Cat c = new Cat("Cat1","blue");
Dog d = new Dog("Dog1","yellow");
//Bird b = new Bird("Bird1","red");
Lady l = new Lady("l1",c);
//l = new Lady("l2",b);
l.myPetEnjoy();
}
}
/*
1.在EditPlus中按下ctr+D会添加当前的日期
2.用到了多态
Lady(String name,Pet p)
{
this.name = name;
this.p = p;
}
void myPetEnjoy()
{
p.enjoy();
}
多态的条件:
1)存在继承
2)父类引用指向子类对象
3)子类重写父类方法
他比那个转型多了一个重写父类方法
3.多态将程序的扩展性发挥到了极致
例如:程序可以添加很多的Pet子类(像Bird类等),而别的地方,完全不用修改代码
他是在运行期间动态的绑定对象的,而不是编译期间
*/
{
private String name;
Pet(String name)
{
this.name = name;
}
void enjoy()
{
System.out.println("宠物的叫声");
}
}
class Dog extends Pet
{
private String furColor;
Dog(String name,String furColor)
{
super(name);
this.furColor = furColor;
}
void enjoy()
{
System.out.println("狗叫声");
}
}
/*class Cat extends Pet
{
private String eyeColor;
Cat(String name,String eyeColor)
{
super(name);
this.eyeColor = eyeColor;
}
void enjoy()
{
System.out.println("猫叫声");
}
}*/
class Bird extends Pet
{
private String wingColor;
Bird(String name,String wingColor)
{
super(name);
this.wingColor = wingColor;
}
void enjoy()
{
System.out.println("鸟叫声");
}
}
class Lady
{
private String name;
private Pet p;
Lady(String name,Pet p)
{
this.name = name;
this.p = p;
}
void myPetEnjoy()
{
p.enjoy();
}
}
public class TestPoly
{
public static void main(String[] args)
{
Cat c = new Cat("Cat1","blue");
Dog d = new Dog("Dog1","yellow");
//Bird b = new Bird("Bird1","red");
Lady l = new Lady("l1",c);
//l = new Lady("l2",b);
l.myPetEnjoy();
}
}
/*
1.在EditPlus中按下ctr+D会添加当前的日期
2.用到了多态
Lady(String name,Pet p)
{
this.name = name;
this.p = p;
}
void myPetEnjoy()
{
p.enjoy();
}
多态的条件:
1)存在继承
2)父类引用指向子类对象
3)子类重写父类方法
他比那个转型多了一个重写父类方法
3.多态将程序的扩展性发挥到了极致
例如:程序可以添加很多的Pet子类(像Bird类等),而别的地方,完全不用修改代码
他是在运行期间动态的绑定对象的,而不是编译期间
*/