慕容囧囧
2018-03-14 04:46
采纳率: 25%
浏览 2.1k
已采纳

java中,父类中的成员属性的值会被子类继承的疑惑!

直接看代码吧!有些人审题不清楚就回答了,看清楚题目,我说的是父类中的成员属性的值会被子类继承!是父类的属性的值会被子类继承,我不是问父类的属性会被子类继承!大家看清楚好吗?大家是怎么理解的!
class Father {

String name;

String hometown = "江西省赣州市于都县";

int age = 52;

}

public class Son extends Father{

public static void main(String[] args) {
    Son son = new Son();
    /**
     son是子类对象,son对象没有给name和 hometown和age这3个属性赋值,如下打印的代码却打印出了父类的属
     性值,可见子类不光是继承了父类的属性,连父类的属性值都继承下来了,我这样理解正确吗?
     */
    System.out.println("子类姓名=" + son.name + " 子类年龄=" + son.age + " 子类家乡=" + son.hometown);
    /**
    再看下面的代码,我给son对象的name和age属性赋值后,打印出了son对象自己的属性值,这里我没有对son对象的hometown属性赋值,所
    以son对象的hometown属性值仍然继承和沿用父类的hometown属性值,我这样理解对吗?
     */
    son.name = "令狐冲";
    son.age = 24;
    System.out.println("子类姓名=" + son.name + " 子类年龄=" + son.age + " 子类家乡=" + son.hometown);
}

}


son是子类对象,son对象没有给name和 hometown和age这3个属性赋值,却打印出了父类的属性值,可见子类不光是继承了父类的属性,连父类的属性值都继承下来了,我这样理解正确吗?大家说下你们是怎么理解的,可以举一些现实生活中的例子帮助我理解吗?不吝赐教,谢谢

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

10条回答 默认 最新

  • baidu_30233079 2018-03-14 08:14
    已采纳

    老peter有一个宝箱,宝箱里面有一颗绝世钻石
    小peter继承了老peter的宝箱,当然包括宝箱里面的宝物!

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • icer8468 2018-03-15 03:27

    你是没有搞清楚类实例的创建过程

    java中类实例创建过程:父子继承关系,先父类再子类。父类的静态->子类的静态->父类的初始化块->父类的构造方法->子类的初始化块->子类的构造方法
    在你的代码里,不涉及静态属性。因此
    Son son = new Son(); //son实例创建过程是:父类的初始化块->父类的构造方法->子类的初始化块->子类的构造方法
    这里的初始化块指的是类中,不在任何方法内的语句,一般位于所有方法之前,可以用花括号 {},也可以不用。另外java中每个类都有一个无参数的默认构造函数,因此你的代码中
    class Father {
    String name;
    String hometown = "江西省赣州市于都县";
    int age = 52;
    }
    也就等价于:
    class Father {
    {//初始化块
    String name;
    String hometown = "江西省赣州市于都县";
    int age = 52;
    };
    public Father(){}
    }
    因此你创建son实例的时候,父类Father的初始化块首先被执行,也就解释了你的问题。

    如果说生活中的例子,其实也很好理解,比如你从父亲那里继承了一台手机,这台手机你父亲使用时候的设置已经在手机里了,你拿到的时候就是你父亲设置的状态,你可以选择恢复出厂,也可以自己重新设置。大概就是这个意思吧。^-^

    希望采纳。

    评论
    解决 2 无用
    打赏 举报
  • 北极熊风 2018-03-14 06:39

    父类private的不被继承,protected, public,default的属性会被子类继承

    评论
    解决 无用
    打赏 举报
  • JAVA_GuJi 2018-03-14 08:16

    儿子拿着(继承)爸爸的饭卡去爸爸的公司食堂吃饭依旧可以吃到饭,饭卡就相当于爸爸的属性。但是如果爸爸没有这个饭卡(属性)你却有,
    可是你依旧不可以去爸爸的食堂吃饭

    吃货的世界就是这样理解的。哈哈

    评论
    解决 无用
    打赏 举报
  • 风中叶卐 2018-03-14 08:39

    你把内初始化流程搞清楚,这个问题就迎刃而解了,附带一句,子类会继承父类的所有属性包括public、protected和private

    评论
    解决 无用
    打赏 举报
  • 会飞的锅 2018-03-14 09:55

    建议你了解一下类的初始化时机和初始化的顺序。

    评论
    解决 无用
    打赏 举报
  • 小冤家一号 2018-03-14 11:57

    儿子继承老子的非私房钱(私房钱就当是private修饰的),儿子有了老子的非私房钱之后,可以随便处理,所以会变化

    评论
    解决 无用
    打赏 举报
  • cqu_sgv5 2018-03-14 13:29

    继承就是属性值继承了,小兄弟

    评论
    解决 无用
    打赏 举报
  • woniyu123 2018-03-15 03:13

    首先,你要搞清楚java的访问修饰符,修饰后,使用范围,public : 对所有类可见。使用对象:类、接口、变量、方法,protected : 对同一包内的类和所有子类可见。使用对象,default (即缺省,什么也不写): 在同一包内可见,不使用任何修饰符,private : 在同一类内可见。使用对象:变量、方法

    评论
    解决 无用
    打赏 举报
  • changk521 2018-03-16 06:37

    private不会被继承

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题