下面的java程序怎么错了
packagemypack1;publicclassClassA{protectedintvar2;}packagemypack1;publicclassClassBex...
package mypack1;
public class ClassA {
protected int var2;
}
package mypack1;
public class ClassB extends ClassA {
void a(){
ClassA a = new ClassA();
a.var2 = 3;
}
}
为什么a。var2 = 3这里错误,protected不是子类和同包公开吗?子类和同包二者是and还是or关系? 展开
public class ClassA {
protected int var2;
}
package mypack1;
public class ClassB extends ClassA {
void a(){
ClassA a = new ClassA();
a.var2 = 3;
}
}
为什么a。var2 = 3这里错误,protected不是子类和同包公开吗?子类和同包二者是and还是or关系? 展开
5个回答
展开全部
同包和继承没有一定的and or关系,同包就是同包了,继承可能在同包也可能不同包
你的代码贴的是局部的,这么看上去就是没错,在一个包下,子类方法实例化父类对象,把继承父类的变量改值,这些都没问题,你再找找别的地方有什么错误吧
比如你的main方法怎么写的等等
你的代码贴的是局部的,这么看上去就是没错,在一个包下,子类方法实例化父类对象,把继承父类的变量改值,这些都没问题,你再找找别的地方有什么错误吧
比如你的main方法怎么写的等等
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
程序没有问题,问题是我们对于访问控制符的理解有偏差
protected确实是子类和同包可以访问!
为何明明是用于继承的protected访问权限,却只能访问继承而来的自己属性和方法,而不能在方法内创建父类对象,并调用其protected方法?难道说我们ClassB类中方法a()的做法没有意义,因为ClassB已经是一个ClassA了?
不得而知
protected确实是子类和同包可以访问!
为何明明是用于继承的protected访问权限,却只能访问继承而来的自己属性和方法,而不能在方法内创建父类对象,并调用其protected方法?难道说我们ClassB类中方法a()的做法没有意义,因为ClassB已经是一个ClassA了?
不得而知
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
兄弟 你的方法名和变量名都是a 换一个就好了 重复了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ClassB继承了ClassA,所以var2直接用就行,不用写a.var2 = 3
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个程序肯定是没错的,你肯定是其他地方弄错了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询