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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 桃华月禅 中级黑马   /  2014-11-26 00:32  /  1549 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class Person
  2. {
  3.         private String name;
  4.         Person(String name){
  5.                 this.name = name;
  6.         }

  7.         public String getName(){
  8.                 return name;
  9.         }
  10. }

  11. class Student extends Person
  12. {
  13.         Student(String name){
  14.                 super(name);
  15.         }
  16. }

  17. class java
  18. {
  19.         public static void main(String[] args){
  20.                 Student s = new Student("haha");
  21.                 System.out.println(s.getName());
  22.         }
  23. }
复制代码


就是如上代码,为什么子类继承的方法能够调用父类的私有成员?

10 个回复

倒序浏览
因为子类构造函数的第一行有一条隐士的super()语句,用来调用父类中空参的构造函数
楼主继承这边在认真复习下,视频中有讲到
回复 使用道具 举报
其实是子类对象调用了父类的公有方法,然后该方法来调用父类的私有成员变量。
回复 使用道具 举报
因为用了父类用了this.name=name,子类直接继承了name
回复 使用道具 举报
yninggis 发表于 2014-11-26 00:58
其实是子类对象调用了父类的公有方法,然后该方法来调用父类的私有成员变量。 ...

我也感觉是这样的,那么过去我对方法继承一直认识错了
继承父类共有方法后,其实子类方法就是在调用父类公有方法...
我过去还以为是把父类中的方法照抄下来...
回复 使用道具 举报
sk0806 发表于 2014-11-26 00:55
因为子类构造函数的第一行有一条隐士的super()语句,用来调用父类中空参的构造函数
楼主继承这边在认真复 ...

我也知道构造函数第一行有隐式的super(),可是这个与能访问父类私有成员变量有关系吗?
回复 使用道具 举报
sk0806 发表于 2014-11-26 00:55
因为子类构造函数的第一行有一条隐士的super()语句,用来调用父类中空参的构造函数
楼主继承这边在认真复 ...

我也知道构造函数第一行有隐式的super(),可是这个与能访问父类私有成员变量有关系吗?
回复 使用道具 举报
桃华月禅 发表于 2014-11-26 13:21
我也感觉是这样的,那么过去我对方法继承一直认识错了
继承父类共有方法后,其实子类方法就是在调用父类 ...

这应该是个继承的问题:子类继承父类时,子类就拥有了父类中公有的方法和公有成员变量。而子类不能拥有父类的私有方法和私有成员变量。
回复 使用道具 举报
wtjohn 中级黑马 2014-11-26 18:30:26
9#
继承不仅是继承父类的方法啊,也包括其他成员啊...
回复 使用道具 举报
wtjohn 中级黑马 2014-11-26 18:34:41
10#
本帖最后由 wtjohn 于 2014-11-26 18:37 编辑

public class Test2 extends Test1{
        public static void main(String[] args) {
                System.out.println(getname());
        }
}
class Test1
{
private static String name="hahaha";
public static String getname()
  {
     return name;
   }}
回复 使用道具 举报
如果没有写构造函数就会有默认的  如果写了 就不会再有默认的了。你这个代码中有代参的构造函数,然后子类在初始化的时候就通过super(name)调用了父类的构造函数,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马