父类和子类方法的调用

 由于没有找到想要的解释,于是自己就在idea上自测来寻找答案。

关于父类,子类,多态之间方法的调用。

package 思考;

public class 子类调用 {
    public static void main(String[] args){
        Anmial an=new Anmial("蛇君");//父类无法调用子类
        an.eat();
        an.go();
        //an.keep();调用子类报错
        System.out.println("-------------------");
        Anmial d=new Dog();//多态无法调用
        d.go();
        d.eat();//调用的是重构过的方法
        //d.keep();多态调用报错
        System.out.println("-------------------");
        Dog de=(Dog)d;//转换为子类可以使用
        de.keep();
        de.eat();
        de.go();
        System.out.println("-------------------");
        Dog dog=new Dog();//子类调用父类
        dog.go();
        dog.eat();//子类只能使用重构过的方法
        dog.keep();
    }
}
class Anmial{
    private String name;
    public Anmial(){

    }
    public Anmial(String name){
        this.name=name;
    }
    public void eat(){
        System.out.println("吃食物~~~");
    }
    public void go(){
        System.out.println("风紧,扯呼~~~");
    }
}
class Dog extends Anmial{
    public void eat(){
        System.out.println("吃骨头~~~");
    }
    public void keep(){
        System.out.println("狗族无大帝~~~");
    }
}

父类和子类方法的调用_第1张图片

由此可以看出 

1、父类定义出来的父类对象,可以调用父类的方法,但无法调用子类的方法.

2、子类定义出来的子类对象,可以调用子类的方法,无法调用父类方法.

以上两点相当于一对父子使用自己的东西,因为私有财产神圣不可侵犯的原因不能碰对方的东西.

3、父类定义出来的子类对象(多态),只能调用父类含有的方法,如果重构过的,那么会调用重构过的方法.

4、如果父类定义的子类对象向下转型,就跟第二点一样了,只能使用自己的方法.​​​​​​​

博主也刚接触Java,如果哪个地方有错的话,希望大家能够指出来.

你可能感兴趣的:(Java小知识,java)