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

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

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("调用子类方法");
}
}
展开
 我来答
包子不是豹子
2014-07-14 · 超过14用户采纳过TA的回答
知道答主
回答量:36
采纳率:100%
帮助的人:28.9万
展开全部
方法之所以能被子类覆盖就是因为有extends这个关键子 你已经继承了Person 所以他的一些属性和方法就是你的了 然而你又写了 void show()
void show() 本身就是父类传递给你的 也就是说你什么都不写 也照样可以点出这个方法 你写了这个之后 就是对方法的重写 (不知道你这一点理解不理解) 然而你其他的问题我没明白你到底是想问什么 你到底是想问子父类中构造方法的始化顺序还是什么 你能跟我说说吗
匿名用户
2018-12-28
展开全部
虽然时间有点久了,还是要分享一下自己的见解。
向上造型:抽取 子类中 [和父类共有的属性和方法] 用来操作。
向上造型作用范围:父类的非私有属性和方法+子类中和父类共有的属性和方法。(非静态方法调用子类的;静态方法,属性调用父类的)
普通继承作用范围:父类的非私有属性和方法+子类中和父类共有的属性和方法+子类扩展方法和属性。
反过来是不是可以说,向上转型就是去掉子类里父类没有的方法和属性。
向下造型,把抽取出拥有父类共性后的子类再强转为同一类型的子类,这时子类和普通子类一样可以使用扩展方法和属性
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式