黑马程序员技术交流社区

标题: 求解 [打印本页]

作者: 阿斯达克    时间: 2015-5-9 21:30
标题: 求解
父类中 成员变量 用private修饰,子类怎么访问呢?

作者: 2666fff    时间: 2015-5-9 21:30
上代码两种方法,你看看

  1. public class classaandb {
  2.         static class A
  3.         {
  4.        
  5.            private static final int a=9;
  6.            private int aa=10;
  7.            public int getaa(){
  8.            return aa;
  9.       }
  10.         }

  11.          static class B extends A
  12.         {
  13.                 public int b = A.a;
  14.                 public int c = super.getaa();
  15.         }
  16.          
  17.     public static void main(String[] args) {
  18.             A a = new A();
  19.             B b = new B();
  20.            
  21.         System.out.println(a.a + "  "+ a.getaa());
  22.         System.out.println(b.b + "  "+ b.c);
  23.     }
  24.    
  25. }
复制代码

作者: YRDHelloworld    时间: 2015-5-9 22:54
子类不能直接访问父类私有成员变量,但是父类可以对外提供一个get()获取的方法间接访问父类私有成员变量
作者: Troy-Fu    时间: 2015-5-9 22:55
父类的成员变量用private修饰,父类要有set,get方法,子类继承父类后,创建对象,调用set方法对成员变量赋值,然后调用get方法获取,子类方法中可以使用get方法调用使用
作者: 过路人    时间: 2015-5-9 23:43
父类中的属性如果定义成private,那么必定会定义与该属性对应的get()和set()方法,来获取和修改该私有属性的值.
作者: yufuhong    时间: 2015-5-10 00:56
本帖最后由 yufuhong 于 2015-5-10 01:01 编辑

使用super(参数)的格式,比如
class Fu
{    private int age;
     public Fu(){}
     public Fu(int age){this.age = age}
   
public void show(){System.out.println(age);}
}
class Zi extends Fu
{
      public Zi(){}//无参构造
     public Zi(int age){super(age)}//有参构造
      
}
//测试类
class Demo
{
//写主方法
public static void main(String[] args){
//new子对象
Zi z=new Zi(10);//传入参数
//调用show方法
z.show();
}
}



作者: 匡璐    时间: 2015-5-10 10:11
比如说
private int age;
这个私有的变量
下面写一个对外访问的方法
publlic int getAge();
return age;
publlic void setAge(ing age);
this.age=age;
用这2个函数可是实现对私有变量的设置和获取
具体的自己再测试一下
纯手打 望采纳


作者: 方的黑马    时间: 2015-5-10 13:26
那就不要private了呗,用哪个太麻烦,
作者: lingdu    时间: 2015-5-10 17:53
方法一:用getter方法获取。
方法二:使用反射获取。
作者: as12510    时间: 2015-5-10 22:34
被私有 修饰后  除了自己  其他类都不能访问 只有通过构造方法 或者setXXX和getXXX来赋值和调用
作者: 只想好好的    时间: 2015-5-10 22:51
本帖最后由 只想好好的 于 2015-5-10 23:40 编辑

子类是不能访问父类私有的方法的,但是可以设置一个get()方法,将他取出来,如
class Person{
private String name;
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
}
class Sun extends Person{
public static void main(String[] args){
Sun s = new Sun();
Person p = new Person();
p.serName("hello");
String name = s.getName();
System.out.println(name);
}
}

作者: 笔墨痕干    时间: 2015-5-11 15:23
子类不能直接访问父类中的私有变量,可以通过set方法赋值,用get方法获取
作者: 赵旗    时间: 2015-5-11 22:00
可以在父类中写一个get  set方法 让子类调用
作者: kolen.j    时间: 2015-5-12 00:07
楼上的都是正解,,,
作者: PeNg★宇    时间: 2015-5-12 00:39
访问不到
作者: CoeusLYJ    时间: 2015-5-12 14:58
  1. public class Question2 {

  2.         public static void main(String[] args) {
  3.                 Student s1=new Student("xiaoming","public XXX school");
  4.         }

  5. }
  6. class Student extends Person{
  7.         String school;
  8.         Student(String name,String school){
  9.                 super.setName(name); //访问父类私有成员需要使用父类提供访部访问的方法
  10.                                                          //因为继承之后就相当于子类也拥有这个私有成员
  11.                 this.school=school;
  12.         }
  13.         Student(){
  14.                
  15.         }
  16. }

  17. class Person{
  18.         private String name;

  19.         public String getName() {
  20.                 return name;
  21.         }
  22.         public void setName(String name) {
  23.                 this.name = name;
  24.         }
  25.        
  26. }
复制代码

作者: mmakun    时间: 2015-5-12 16:00
子类无法访问,只能调用父类方法访问它
作者: 南朝小和尚    时间: 2015-5-12 21:19
要么调用其他方法,要么父类接口
作者: 古典牧童    时间: 2015-5-13 01:21
子类不能直接访问啊,但是可以通过一个public的getter和setter方法来访问
作者: yas丶    时间: 2015-5-13 14:35
在父类中建立getset方法进行获取
作者: liujin    时间: 2015-5-14 00:38
父类中成员变量私有后,如果需要子类访问,要在父类中写set和get方法来获取
作者: 黛玉之殇    时间: 2015-5-14 09:28
private 是私有化的意思,打个比方:某女星找了一个干爹,干爹就是她的父类,她想要她干爹的钱,但是她干爹银行卡设置了密码(private),私有化了,因为他干爹知道不能直接把全部钱给她,但是疼她必须得给钱,,,于是就开放了一个 get 方法(如支票),这样子,这个女星就可以通过访问 get 方法得到钱了。{:3_64:}感觉自己太形象了,这比喻
作者: 黛玉之殇    时间: 2015-5-14 09:30
黛玉之殇 发表于 2015-5-14 09:28
private 是私有化的意思,打个比方:某女星找了一个干爹,干爹就是她的父类,她想要她干爹的钱,但是她干爹 ...

这么形象的比喻。是不是该给点黑马币啊{:3_50:}
作者: 黛玉之殇    时间: 2015-5-14 09:31
黛玉之殇 发表于 2015-5-14 09:30
这么形象的比喻。是不是该给点黑马币啊

她干爹中还有一个 set 方法(写支票),那么她就可以通过 get 方法去拿钱了{:3_46:}
作者: 珠宝    时间: 2015-5-14 23:05
子类只能访问父类中所有非私有的成员,子类若要访问,需要在父类中提供公共的访问方式get和set的方法
作者: 开弓没有回头箭    时间: 2015-5-14 23:06
子类不能直接访问父类私有成员,只有通过父类提供的方法访问
作者: 枕寒流    时间: 2015-5-15 10:06
子类中可以使用父类的get方法调用父类私有成员变量
作者: 桂翔    时间: 2015-5-16 15:32
可以在父类中写一个public修饰方法,来间接调用
作者: 油炸电视剧    时间: 2015-5-17 09:19
这个算是父类私有的属性,如果父类没有定义这个属性的set和get方法的话,那么你就不能访问到这个属性。这个就像父类的二奶,他是不肯你去访问的(听一个视频上讲的,至今记忆深刻)。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2