【Java】多态和抽象

来源:互联网 发布:淘宝下架时间显示插件 编辑:程序博客网 时间:2024/06/08 13:51

多态

class Animal{    private String name;    Animal(String name){        this.name=name;    }    public void enjoy(){        System.out.println("叫声......");    }}class Cat extends Animal{    private String eyesColor;    Cat(String n,String c){        super(n);        eyesColor=c;    }    public void enjoy(){        System.out.println("猫叫声......");    }}class Dog extends Animal{    private String furColor;    Dog(String n,String c){        super(n);        furColor=c;    }    public void enjoy(){        System.out.println("狗叫声......");    }}class Lady{    private String name;    private Animal pet;    Lady(String name,Animal pet){        this.name = name;        this.pet = pet;    }    public void myPetEnjoy(){        pet.enjoy();    }}public class TestPolymoph{    public static void main(String args[]){        Cat c = new Cat("catname","blue");        Dog d = new Dog("dogname","black");        Lady L1 = new Lady("L1",c);        Lady L2 = new Lady ("L2",d);        L1.myPetEnjoy();        L2.myPetEnjoy();    }}

  多态表示不同的对象执行相同的动作,但要通过它们自己的实现代码来执行。上面的例子中,猫类和狗类执行相同的动作–叫声,但通过自己的实现代码来执行–猫叫声和狗叫声。根据Lady对象的成员变量pet所引用的不同的实际类型而调用响应的enjoy方法。多态的三个必要条件:要有继承;要有重写;父类引用指向子类对象。

抽象

  就像“动物”是一个抽象的名词,根本没有具体的对象与之对应,实例化没有任何意义,像这样的情况,我们可以把它改为抽象类,即在class之前加abstract关键字。用abstract来修饰方法时,它就是抽象方法。使用的时候,我们可以考虑让抽象类拥有尽可能多的共同代码,拥有尽可能少的数据。
  注意:1、抽象方法一定是用来被实现的。2、抽象类必须被继承。3、抽象方法必须被重写。4、抽象类不能被实例化。5、抽象方法只声明不实现。

abstract class Animal {  //抽象类  private String name;  Animal(String name) {this.name = name;}  public abstract void enjoy(); //抽象方法,只需声明不需实现}class Dog extends Animal {  private String furColor;  Dog(String n,String c) {super(n); furColor = c;}  public void enjoy() {     //抽象方法的实现    System.out.println("狗叫声......");  }}class Bird extends Animal {  //抽象类的继承     Bird() {         super("bird");   //调用基类的构造方法     }     public void enjoy() {    System.out.println("鸟叫声......");  }}class Lady {    private String name;    private Animal pet;    Lady(String name,Animal pet) {        this.name = name; this.pet = pet;    }    public void myPetEnjoy(){pet.enjoy();}}public class TestPolymoph {    public static void main(String args[]){        Dog d = new Dog("dogname","black");        Bird b = new Bird();        Lady L1 = new Lady("L1",d);        Lady L2 = new Lady("L2",b);        L1.myPetEnjoy();        L2.myPetEnjoy();    }}

这里写图片描述

1 0
原创粉丝点击