package Test;
public class DuoTai {
public static void main(String[] args) {
//HomeChicken hc = new HomeChicken("小鸡鸡");//与结果一样 Chicken hc = new HomeChicken("小鸡鸡");
//hc.eat();
Chicken hc = new HomeChicken("小鸡鸡");//用父类指向子类的对象(大的类型表示小的类型)自动转换(向上转化)
// YeChicken yc = new YeChicken("大鸡鸡");
//yc.eat();
Chicken yc = new YeChicken("大鸡鸡");
eat(hc);
eat(yc);
Chicken jjc = new JianJiaoChicken("尖叫鸡");
eat(jjc);
}
//抽象(粒度),,既能传家鸡,又能传野鸡(面向抽象编程,面向接口编程)
public static void eat(Chicken c){//如果参数改为HomeChicken那么其他实例化的鸡就不能调用,将报错。并且此方法可以在不改变原来的类,可扩展其他鸡类,如增加一个JianJiaoChicken类
System.out.println("鸡吃饭");//未来可能这里调用方法更多,我们只需要在主方法中实例后调用此方法即可
c.eat();
}
}
abstract class Chicken{
private String name;
public Chicken() {}
public Chicken(String name) {
this.name=name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public abstract void eat();
}
class HomeChicken extends Chicken{
public HomeChicken(String name) {
super(name);
}
public void eat(){
System.out.println(this.getName()+"我爱吃米");
}
}
class YeChicken extends Chicken{
public YeChicken(String name) {
super(name);
}
public void eat(){
System.out.println(this.getName()+"我爱吃虫子");
}
}
class JianJiaoChicken extends Chicken{
public JianJiaoChicken(String name) {
super(name);
}
public void eat(){
System.out.println("我不吃虫子");
}
public void song(){
System.out.println(this.getName()+"我会唱歌");
}
}
java多态的应用举例
最新推荐文章于 2023-01-19 00:04:22 发布