Java基础之多态

代码中体现多态性:父类引用指向子类对象 (左父右子就是多态)
格式:
父类名称 对象名 = new 子类名称();
或者
接口名称 对象名 = new 实现类名称();
例:定义一个父类Fu和两个方法method, methodFu,定义一个子类Zi继承Fu,并重新写父类的method方法:

public class Fu {
    public void method() {
        System.out.println("父类方法!");
    }
    public void methodFu() {
        System.out.println("父类特有方法!");
    }
}
public class Zi extends Fu{
    @Override
    public void method() {
        System.out.println("子类方法!");
    }
}
public class Test {
    public static void main(String[] args) {

        //左侧附列的引用,指向了右侧子类的引用
        Fu obj = new Zi();
        obj.method();
        ///调用父类特有方法
        obj.methodFu();
    }
}

这里写图片描述

假设父类和子类中有重名的成员变量,当访问该成员变量时:

  • 直接通过对象名称访问成员变量:等号左边是谁,则访问谁,没有则向上找;
  • 间接通过成员方法访问成员变量:看该方法属于谁,优先用谁,没有则向上找。
public class Fu {
    int num = 10;
    public void showNum() {
        System.out.println(num);
    }
}
public class Zi extends Fu{
    int num = 20;
}
public class Test {
    public static void main(String[] args) {

        //左侧父类的引用,指向了右侧子类的引用
        Fu obj = new Zi();
        //等号左边是父类,打印出父类的num
        System.out.println(obj.num);

        //调用成员方法访问成员变量:该方法属于谁,就优先用谁,没有则向上找
        obj.showNum();//子类没用重写,方法为父;子类如果重写,则为子
    }
}

这里写图片描述

猜你喜欢

转载自blog.csdn.net/sinat_21107433/article/details/81120668