A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

2黑马币
问题? private 或者final 修饰的属性或者方法 可以被子类继承么。
class fu {
            private int age ;
           public int getAge(){
                     return age ;
                  }
           public void setAge(int age){
                   this.age = age;
                 }
            }
class zi extend fu{
  }
class Demo{
     public static void main(String[] args){
     zi z = new zi();
     z.setAge(30);
   }
这段代码中子类调用了父类的setAge方法 ,给age重新赋值,我搞不懂,这个age是子类中的属性么,还是说赋值的是父类中的属性。

最佳答案

查看完整内容

private修飾的方法和屬性,子類是不可見的,子類見到的是父類的方法getAge();就像測試類也能調用getAge()一樣。 final修飾的方法是不能被重寫,不是不能被調用。通過子類的變量,一樣可以調用父類的final方法。 另外,你的繼承extends寫錯了偶。

17 个回复

倒序浏览
private修飾的方法和屬性,子類是不可見的,子類見到的是父類的方法getAge();就像測試類也能調用getAge()一樣。
final修飾的方法是不能被重寫,不是不能被調用。通過子類的變量,一樣可以調用父類的final方法。
另外,你的繼承extends寫錯了偶。
回复 使用道具 举报
当然是子类中的属性了呀1
回复 使用道具 举报
age是父类中的属性,子类调用父类公有的方法
子类继承父类同时也就具备了父类中非私有的属性和方法。被私有修饰是不能被子类继承的。所以父类中的age不可能被子类继承
回复 使用道具 举报
private 或者final  修饰符 是不能被任何子类 继承的
private  私有的 的意思,我私有的东西,怎么可能让别人随便用呢
final 最终的,都已经使最终了,那怎么会被继承走了
你问题中的age是父类的,你子类用的是父类的方法,而不是用了age,所以你子类的对象是无法直接操作age 的
回复 使用道具 举报
private:成员修饰符,被private修饰的成员不可被子类继承。
final:修饰不同的对象,有不同表现:
1.修饰属性时,不可被修改。(可以被子类继承)
2.修饰方法时,不可被重写。(方法可以重载,被子类继承可以继承)
3.修饰类时,不可被继承。
楼主问的问题就就看拿来修饰什么了。
回复 使用道具 举报
mengxun 发表于 2015-7-26 14:28
age是父类中的属性,子类调用父类公有的方法
子类继承父类同时也就具备了父类中非私有的属性和方法。被私有 ...

也就是说子类并没有age的属性,生成对象时,产生的是父类的属性,调用修改的也是父类的属性。
回复 使用道具 举报
private跟final都是不能被子类调用修改的,这体现了java的封装性。
而父类会提供public的方法,来设置这些private的成员变量。

你所说的age变量,其实是子类从父类继承下来的private变量,也就变成了子类的私有变量。这时候是调用父类的setAge()方法来给age这个变量赋值。所以是给子类自己的变量赋值,而不是更改了父类私有变量的值
回复 使用道具 举报
libin 中级黑马 2015-7-26 17:07:15
9#
简单点来说,子类继承了父类,子类就拥有了父类中的所有东西,age是父类的成员变量,也是子类的。但这里要注意一点:构造函数,子类默认继承父类空参数的构造函数,有参数的构造函数,必须敲出代码。
回复 使用道具 举报
差不多冬至 发表于 2015-7-26 16:04
也就是说子类并没有age的属性,生成对象时,产生的是父类的属性,调用修改的也是父类的属性。 ...

至少这个代码里面age属性是父类的而且子类无法继承
回复 使用道具 举报
private 或者final 修饰的属性或者方法不可以被继承
回复 使用道具 举报
这道题是关于类的封装及继承的问题:
1.题中的private将age私有化了,也就是说age只能在fu类中被访问(setAge和getAge提供了访问age的方式),不能被其它的类访问(包括题中继承fu类的zi类),所有子类通过访问setAge和getAge来间接访问age的值;
2.继承的概念:指在一个现有类的基础上去构建一个新的类,构建出的新类被称为子类,现有的类称作父类,子类会自动拥有父类所有可继承的属性和方法。

所以访问的是父类的age。


回复 使用道具 举报
首先 extends  要写对啊。。。。子类中没有 继承 age ,  只是通过方法 的修改和得到,父类中的私有属性
回复 使用道具 举报
本帖最后由 xqtzzl521 于 2015-7-29 22:28 编辑

age定义在父类中,父类中放的是多个类存在的相同的属性和行为,所以age是所有子类的属性
但是private修饰的属性和方法是不能被子类继承的
回复 使用道具 举报

1) final修饰的类不能被继承
2) final修饰的变量其值不能被改变
3)final修饰的局部变量有利于垃圾回收


private是私有的意思
private修饰的方法或者变量不能被创建对象调用
private不能修饰抽象方法;
回复 使用道具 举报
是的,继承后就有了age属性
回复 使用道具 举报
不可以  因为子类继承要被重写   private修飾的方法是被私有的所以不能被继承   final修飾的方法是不可以被重写  
回复 使用道具 举报
陈熙 发表于 2015-8-1 22:53
不可以  因为子类继承要被重写   private修飾的方法是被私有的所以不能被继承   final修飾的方法是不可以被 ...

太棒了                        



太棒了          解释的太好了                 





回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马