解决方案 »
- Swing在往JTextField中输入中文的时候,出现的“输入窗口”能去掉吗?
- 求助 这个程序哪错了
- 急!!!汇编里面的 String DB 50,? 50 dup(?)
- Java中float的取值范围是什么?
- java多线程 CPU占用率100%问题
- 一个关于"|""&"运算的问题
- 怎样用java开发类似proxycap的功能?或者类似27代理的功能
- 如何实现这个简单的和图形相关的java程序??????????????
- 菜鸟问题
- 我的jboss怎么没有图形配置工具呢???(急!!!)
- java tutorial里的例子,为什么会死锁?我死活分析不出来
- 关于java实现 计算四则表达式的 问题
protected,表示有条件的限制以保护该成员,当您将类别成员定义为protected之后,继承它的类就可以直接使用这些成员,但这些成员仍然受到对象范围的保护,不可被对象直接使用。对protected而言:Son extends Father,在子类Son的作用范围内,只能调用Son定义的对象的protected方法(即该方法从父类Father中继承而来);
而不能调用Father类对象的protected 方法:Father f = new Father();
不能用Father的对象引用;
protected修饰的变量可以在另外一个包中引用啊,只要那个类是定义protected成员的类的子类。这不是proected的定义吗?
确定报错,错误提示把test1()改成protected,但是本来就是protected的啊!
难道编译器的问题?这个问题好。不是需求,只是实验
作用范围: 当前类 同一个包 其他package 同包子孙类 不同包子孙类
public 可以 可以 可以 可以 可以
protected 可以 可以 不可以 可以 可以
default 可以 可以 不可以 可以 不可以
private 可以 不可以 不可以 不可以 不可以
lz看看上面的访问权限,你的程序是不同包的。package zpc.databaseTest;和package TinkingJava;访问当然会出错。
protected void test1(){
System.out.println("name=");
}
这样试试~~~~嘿嘿
你这属于编译错误吧??
protected修饰的属性、方法只能在同一个包的情况下访问,看你的package,很明显不在一个包里~~~
protected 表明被它修饰的成员变量和方法为保护类型,在同一个包里和 public 类型是一样的,也是能够访问到的。但是如果在不同包里的 protected 类型的成员变量就只能通过子类来访问,这个修饰符是区别于其他的修饰符的。子类之所以可以访问是因为,子类继承了父类,这些属性和方法相当于也继承过来了,等同于相同包下的访问这是我的理解,我也学习没多久,希望对你有帮助......
main在类A里面,A的private方法都能调用,
因为main是属于这个类的,它的权限范围自然就是A本身,A本身不能调用父类的private方法,但能调用protected方法.
楼主把main移动其他地方去,就是你想象的
却没理解另一个很重要的一个限制:在子类中,该子类中的方法只能用 该子类对象访问protected修饰的字段或方法,而不能用 父类对象或该父类派生的其它子类对象 访问protected修饰的字段或方法;当然这里是在不同的包中;还有就是在对象方法中用super调用父类方法,如super.test1()等,其实这样调用还是限制在该子类的对象方法中;用你的示例来说就是:在Son类中,Son中的方法只能用 Son对象 访问protected修饰的字段或方法;还要注意:编译时变量用的是声明的类型;你还可以新建个包,再创建个子类,这样就能更清楚了解了:
如:
public class Son1 extends Father{ public static void main(String[] args) {
Father f = new Son1();
f.test1();
Son son = new Son();
son.test1();
Son1 son1 = new Son1();
son1.test1(); }}
父类怎么就不在访问权限内了?test1()在Father类定义了啊不同包不错,但是没看到test1是protected的吗不好意思 刚刚看错题了~~~
你这属于编译错误吧??
protected修饰的属性、方法只能在同一个包的情况下访问,看你的package,很明显不在一个包里~~~
protected修饰的不是只能在一个包才能访问,另外一个包的子类可以,看书!
貌似是正解!