继承protected函数如何调用

inter18099 2012-09-09 04:48:19
在文件夹workplace里有一个class:


package workplace;

public class ProtectedFunc {
protected void eat(){
System.out.println("eat something");
}
}



在workplace文件夹的上一级文件夹里有1个class:


import workplace.*;

class Abc extends ProtectedFunc{
void eat(String s) {
super.eat();
System.out.println(s + "abc");
}
public static void main(String[] args) {
Abc a = new Abc();
a.eat();
ProtectedFunc p = new ProtectedFunc();
p.eat();

}
}



问: 为什么 a.eat()不报错,而p.eat()就报错啊?

错误:Abc.java:12: eat()可以在ProtectedFunc中访问protected
...全文
369 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
疯狂的球球ww 2012-09-10
  • 打赏
  • 举报
回复
求解..
疯狂的球球ww 2012-09-10
  • 打赏
  • 举报
回复
请问引入包没有..[Quote=引用 3 楼 的回复:]
问下LZ我的程序和你的是类似的,但是那个子类程序不打包之前可以编译写入package以后就报找不到类(父类),是怎么回事啊!
[/Quote]
龙泉剑 2012-09-10
  • 打赏
  • 举报
回复
包访问权限和保护访问权限的区别:
包访问权限可以在同一个包中使用,不管是子类还是非子类;
保护访问权限除了能在同一个包中使用外,还可以在不同包的子类中使用。
lost_guy_in_scut 2012-09-10
  • 打赏
  • 举报
回复
protected (受保护的):被protected修饰的属性和方法可以在类内部,相同的包下,以及这个类的子类所访问

问: 为什么 a.eat()不报错,而p.eat()就报错啊?
因为a.eat()调用的是子类的方法,子类的eat方法可以访问父类的eat方法
p.eat() 你直接声明了一个父类的对象,因为该main函数与父类不在同一个包,所以访问不了父类的protected函数
suns1986 2012-09-10
  • 打赏
  • 举报
回复
问下LZ我的程序和你的是类似的,但是那个子类程序不打包之前可以编译写入package以后就报找不到类(父类),是怎么回事啊!
inter18099 2012-09-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

protected (受保护的):被protected修饰的属性和方法可以在类内部,相同的包下,以及这个类的子类所访问

问: 为什么 a.eat()不报错,而p.eat()就报错啊?
因为a.eat()调用的是子类的方法,子类的eat方法可以访问父类的eat方法
p.eat() 你直接声明了一个父类的对象,因为该main函数与父类不在同一个包,所以访问不了父类的protected函数
……
[/Quote]

但是该main函数所在的class Abc{}是ProtectedFunc的子类,也就说就是在子类Abc{}中调用父类protectedFunc{}的protected方法,这样也不行吗?
疯狂的球球ww 2012-09-10
  • 打赏
  • 举报
回复
Abc a = new Abc();
a.eat();
ProtectedFunc p = new ProtectedFunc();
p.eat();
子类及同一个包才可以用 那个对象a是子类的对象 但是ProtectedFunc new出来的对象p跟那个保护成员不在同一个包里 这样说的通么 共同探讨下
zhaoming262350 2012-09-09
  • 打赏
  • 举报
回复
protected (受保护的):被protected修饰的属性和方法可以在类内部,相同的包下,以及这个类的子类所访问;
吴红军 2012-09-09
  • 打赏
  • 举报
回复
protected 只能在同一包下,以及子类中可以使用。。。。
认真看下protected。。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧