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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

阿斯达克

初级黑马

  • 黑马币:16

  • 帖子:8

  • 精华:0

© 阿斯达克 初级黑马   /  2015-5-9 21:30  /  6631 人查看  /  28 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

5黑马币
父类中 成员变量 用private修饰,子类怎么访问呢?

最佳答案

查看完整内容

上代码两种方法,你看看

28 个回复

倒序浏览
上代码两种方法,你看看

  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. }
复制代码
回复 使用道具 举报
子类不能直接访问父类私有成员变量,但是父类可以对外提供一个get()获取的方法间接访问父类私有成员变量
回复 使用道具 举报
父类的成员变量用private修饰,父类要有set,get方法,子类继承父类后,创建对象,调用set方法对成员变量赋值,然后调用get方法获取,子类方法中可以使用get方法调用使用
回复 使用道具 举报
父类中的属性如果定义成private,那么必定会定义与该属性对应的get()和set()方法,来获取和修改该私有属性的值.
回复 使用道具 举报
本帖最后由 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:32
7#
比如说
private int age;
这个私有的变量
下面写一个对外访问的方法
publlic int getAge();
return age;
publlic void setAge(ing age);
this.age=age;
用这2个函数可是实现对私有变量的设置和获取
具体的自己再测试一下
纯手打 望采纳

回复 使用道具 举报
那就不要private了呗,用哪个太麻烦,
回复 使用道具 举报
lingdu 中级黑马 2015-5-10 17:53:06
9#
方法一:用getter方法获取。
方法二:使用反射获取。
回复 使用道具 举报
被私有 修饰后  除了自己  其他类都不能访问 只有通过构造方法 或者setXXX和getXXX来赋值和调用
回复 使用道具 举报
本帖最后由 只想好好的 于 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);
}
}
回复 使用道具 举报
子类不能直接访问父类中的私有变量,可以通过set方法赋值,用get方法获取
回复 使用道具 举报
可以在父类中写一个get  set方法 让子类调用
回复 使用道具 举报
楼上的都是正解,,,
回复 使用道具 举报
访问不到
回复 使用道具 举报
  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. }
复制代码
回复 使用道具 举报
子类无法访问,只能调用父类方法访问它
回复 使用道具 举报
要么调用其他方法,要么父类接口
回复 使用道具 举报
子类不能直接访问啊,但是可以通过一个public的getter和setter方法来访问
回复 使用道具 举报
在父类中建立getset方法进行获取
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马