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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 陈宇鹏 于 2013-4-8 01:35 编辑
  1. abstract class Worker
  2. {
  3.         String name;
  4.     int id;
  5.     double pay;
  6.     Worker(String name,int id,double pay)
  7.         {
  8.         this.name = name;
  9.         this.id = id;
  10.         this.pay = pay;
  11.     }
  12.     abstract void show();
  13. }

  14. class haha extends Worker
  15. {
  16.     haha(String name,int id,double pay)
  17.         {
  18.                 super(name,id,pay);
  19.         }
  20.     void show()
  21.         {
  22.                
  23.      }
复制代码
上面这一段中,我知道继承是没有办法继承私有化成员的
那不就是说这时父类中的成员变量是没有办法私有化?
我该如何保证除了子父类之外的对象不能够访问成员变量?

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

12 个回复

倒序浏览
有一个protected用来修饰,就能够在父类跟子类中私有,而其他的类是无法访问的。
public是公共的。
private表示私有的。
protected 表示子类或者同一个包中的类都能访问到。
具体就是在你3、4、5这3个变量前加入protected就行了。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
李凯 发表于 2013-4-7 21:57
有一个protected用来修饰,就能够在父类跟子类中私有,而其他的类是无法访问的。
public是公共的。
private ...

额。哈哈 有点超前。。。还没学到:lol
回复 使用道具 举报
这里给出几个修饰符的访问最大范围
private:同一个类内部
default:同一个包中的类
protected:不同包中的子类
public:其他包中的各个类

所以,你这个情况加一个protected就行了
回复 使用道具 举报
王川 发表于 2013-4-7 23:18
这里给出几个修饰符的访问最大范围
private:同一个类内部
default:同一个包中的类

什么是不同包中的子类,能举个例子么
回复 使用道具 举报
陈宇鹏 发表于 2013-4-8 00:38
什么是不同包中的子类,能举个例子么

在包com.itheima下有一个父类Father:
public class Father {
        protected static String name = "黑马";
}

在包com.itheima1下有一个子类Son,和一个非子类NotSon
public class Son extends Father {
        public static void main(String[] args) {
                System.out.println(name);//这里能访问
        }
}

public class NotSon {
        public static void main(String[] args) {
                System.out.println(new Father().name);//这里提示不能访问
        }
}



你会看到,不同包的时候,只有子类能访问父类的protected属性

懂了么
回复 使用道具 举报
本帖最后由 李凯 于 2013-4-8 01:01 编辑
王川 发表于 2013-4-8 00:51
在包com.itheima下有一个父类Father:
public class Father {
        protected static String name = "黑马";
你的说法没错。
回复 使用道具 举报
李凯 发表于 2013-4-8 00:56
你的说法没错。

你写程序的时候,注意到类前面一般有一个package ……吗,如果后面的内容不同,就代表不同的包。
按照你这么说,那我很多文件还可以都放到E盘呢,难道都是属于同一个包??
回复 使用道具 举报
本帖最后由 王川 于 2013-4-8 01:08 编辑

{:soso_e100:}
回复 使用道具 举报
王川 发表于 2013-4-8 01:04
你写程序的时候,注意到类前面一般有一个package ……吗,如果后面的内容不同,就代表不同的包。
按照你 ...

感谢 明白了。那么  同包下呢???我还没学到这里呢
回复 使用道具 举报
陈宇鹏 发表于 2013-4-8 01:34
感谢 明白了。那么  同包下呢???我还没学到这里呢

同包下就是包名相同。
这个时候,如果你的属性没有加修饰符,则可以在同包下的类中访问到
回复 使用道具 举报
王川 发表于 2013-4-8 01:38
同包下就是包名相同。
这个时候,如果你的属性没有加修饰符,则可以在同包下的类中访问到 ...

那如果也用protected呢。。
这没影响吧
回复 使用道具 举报
陈宇鹏 发表于 2013-4-8 01:56
那如果也用protected呢。。
这没影响吧

嗯,对的。后面范围大的能覆盖前面的范围。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马