Java面向对象学习笔记-----多态

夏果果 1月前 ⋅ 137 阅读

多态的格式和使用:

 代码当中体现多态性,其实就是一句话: 父类引用指向子类对象。
格式:

父类名称 对象名 = new 子类名称();


或者

接口名称 对象名= new 实现类名称();
public class Fu {
    public void method(){
        System.out.println("父类方法");
    }

    public void methodA(){
        System.out.println("父类的特有方法");
    }
}

public class Zi extends Fu {
    @Override
    public void method() {
        System.out.println("子类方法");
    }
}

public class demo08Multi {
    public static void main(String[] args) {
        //使用多态的写法
        Fu obj = new Zi();
        obj.method();//子类方法
        obj.methodA();//父类的特有方法
    }
}

多态中成员变量的使用特点

访问成员变量的两种方式:
    1.直接通过对象名称访问成员变量,看等号左边是谁,优先用谁,没有则向上找。
    2.间接通过成员方法访问成员变量,看该方法属于谁,优先用谁,没有则向上找。

public class Fu {
    int num = 10;
    public  void showNum(){
    }
}

public class Zi extends Fu {
    int num = 20;

    @Override
    public void showNum() {
        System.out.println(num);
    }
}

public class Demo09MultiField {
    public static void main(String[] args) {
        //使用多态的写法,父类引用指向子类对象
        Fu obj = new Zi();
        System.out.println(obj.num);//10

        //子类没有覆盖重写,就是父。//10
        //子类如果覆盖重写,就是子 //20
        obj.showNum();//20
    }
}

多态中成员方法的使用特点

在多态的代码当中,成员方法的访问规则是
    看new的是谁,就优先用谁,没有则向上找。
口诀:编译看左边,运行看右边。
对比一下:
    成员变量:编译看左边,运行还看左边。
    成员方法,编译看左边,运行看右边。

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  void methodZi(){
        System.out.println("子类特有方法");
    }
}

public class Demo10MultiField {
    public static void main(String[] args) {
        Fu obj = new Zi();
        obj.method();//子类方法    父子都有 优先用字
        obj.methodFu();//父类特有方法   子类没有,父类有,向上找父类

        //编译看左边,左边是Fu,Fu当中没有methodZi方法,所哟编译报错
//        obj.methodZi();//错误写法
    }
}

 

 

全部评论: 0

    我有话说: