java向上转型 为什么只能引用父类属性,而方法调用时只能调用父类已有的方法,并且父类方法能被子类覆盖。

在创建对象的时候是调用子类构造器,那么属性是什么时候赋值的,如果是调用有参构造器为什么里面的赋值没有用呢?

package day05;

public class Person {
String name="父类";
public Person() {
System.out.println("调用父类无参构造器");
}
public Person(String name){
this.name=name;
System.out.println("调用父类有参构造器 name="+this.name);
}
void show(){
System.out.println("调用父类方法");
}

public static void main(String[] args) {
Person p=new Son("aa");
System.out.println(p.name);;
}
}
class Son extends Person{
String name="子类";
public Son() {
System.out.println("调用子类无参构造器");
}
public Son(String name){
this.name=name;
System.out.println("调用子类有参构造器 name="+this.name);
}
void show(){
System.out.println("调用子类方法");
}
}

方法之所以能被子类覆盖就是因为有extends这个关键子 你已经继承了Person 所以他的一些属性和方法就是你的了 然而你又写了 void show()
void show() 本身就是父类传递给你的 也就是说你什么都不写 也照样可以点出这个方法 你写了这个之后 就是对方法的重写 (不知道你这一点理解不理解) 然而你其他的问题我没明白你到底是想问什么 你到底是想问子父类中构造方法的始化顺序还是什么 你能跟我说说吗
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-12-28
虽然时间有点久了,还是要分享一下自己的见解。
向上造型:抽取 子类中 [和父类共有的属性和方法] 用来操作。
向上造型作用范围:父类的非私有属性和方法+子类中和父类共有的属性和方法。(非静态方法调用子类的;静态方法,属性调用父类的)
普通继承作用范围:父类的非私有属性和方法+子类中和父类共有的属性和方法+子类扩展方法和属性。
反过来是不是可以说,向上转型就是去掉子类里父类没有的方法和属性。
向下造型,把抽取出拥有父类共性后的子类再强转为同一类型的子类,这时子类和普通子类一样可以使用扩展方法和属性
相似回答