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个属性赋值,却打印出了父类的属性值,可见子类不光是继承了父类的属性,连父类的属性值都继承下来了,我这样理解正确吗?大家说下你们是怎么理解的,可以举一些现实生活中的例子帮助我理解吗?不吝赐教,谢谢

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

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

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的初始化块首先被执行,也就解释了你的问题。

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

希望采纳。

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

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

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

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

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

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

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

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

private不会被继承