由于没有找到想要的解释,于是自己就在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、父类定义出来的父类对象,可以调用父类的方法,但无法调用子类的方法.
2、子类定义出来的子类对象,可以调用子类的方法,无法调用父类方法.
以上两点相当于一对父子使用自己的东西,因为私有财产神圣不可侵犯的原因不能碰对方的东西.
3、父类定义出来的子类对象(多态),只能调用父类含有的方法,如果重构过的,那么会调用重构过的方法.
4、如果父类定义的子类对象向下转型,就跟第二点一样了,只能使用自己的方法.
博主也刚接触Java,如果哪个地方有错的话,希望大家能够指出来.