多态

多态

同一个对象体现出来的多种不同的形态(身份),将一种行为表现出不同的效果

要想实现多态的效果,需要先有继承关系

体现

  1. 通过父类类型的引用指向子类的对象

    Person p = new Teacher();
    
  2. 该引用只能调用父类中的属性或方法

  3. 如果父类中方法被子类重写,那么调取方法后执行的结果是子类重写后的方法

  4. 如果父类和子类有同名的属性,调用父类的属性

  5. 如果想要调用子类中独有的成员,需要造型(铸型),(向下/向上转型)

  6. 强制向下造型时,可能会出现ClassCastException造型异常(如果想要避免造型时异常,可以用instanceof关键字进行判断;对象 instanceof 类型:判断对象与类型是否匹配)

Person.java

package test;

public class Person {

    public String name = "父类中的name属性";
    public void eat(){
        System.out.println("人类的吃饭方法!");
    }
    public void sleep(){
        System.out.println("人类的睡觉方法!");
    }
    public void talk(){
        System.out.println("人类的说话方法!");
    }
}

Teacher.java

package test;

public class Teacher extends Person {
    public String name = "子类中的name属性";

    public void eat(){
        System.out.println("老师的吃饭方法");
    }
    public void teach(){
        System.out.println("老师的讲课方法");
    }
}

Test.java

package test;

public class Test {
    public static void main(String[] args){
        Person p = new Teacher();
        p.eat();//老师的吃饭方法
        p.sleep();//人类的睡觉方法
        p.talk();//人类的说话方法!
        System.out.println(p.name);//人类的说话方法!
        ((Teacher) p).teach();//老师的讲课方法
    }
}

你可能感兴趣的:(java,多态)