请问一个关于java抽象类里访问修饰符的问题

packagezhuanhuan;publicabstractclasszhuanhuan{protectedfloattemp;publiczhuanhuan(){}p... package zhuanhuan;

public abstract class zhuanhuan {
protected float temp;
public zhuanhuan() {
}
public zhuanhuan(float temp1) {
temp=temp1;
}
protected abstract void convert();
}

******************************************
package huashi_sheshi;

import zhuanhuan.zhuanhuan;

class Huashi_Sheshi extends zhuanhuan{
Huashi_Sheshi(){
}
Huashi_Sheshi(float temp1) {
super(temp1);
}
void convert(){
System.out.println("从华氏温度到摄氏温度的转换");
System.out.println("*************************************");
System.out.println("摄氏温度为:"+temp);
System.out.println("华氏温度为:"+((temp-32)*5/9));
};
}

这两个类不在同一个包里,父类为一个抽象类,子类实现父类的抽象方法。jbuilder提示子类有误,但把子类的void convert(){} 改成protected void convert(){}就ok了
有点想不明白,我以为访问修饰符只是对继承他的子类有意义,难道父类也会反过来访问检测子类是否实现他的抽象方法吗?
展开
 我来答
ukao
2007-08-01 · 超过40用户采纳过TA的回答
知道答主
回答量:181
采纳率:0%
帮助的人:98.6万
展开全部
如果为void convert()则实际为friendly void convert()
friendly 比protect具有更低的访问权限。
所以jbuilder会提示你 "试图减弱访问权限"

补充:你可以思考下。如果父类A具有一个protected void P()的方法,子类B继承了父类P()的方法,把P()写成一个friendly的方法
再写一个C extends B类,C类则不具有P()的方法,而C的最终类又是A,说明C应该有P()方法,这不是矛盾么?
天之魔神
2007-08-01 · TA获得超过537个赞
知道小有建树答主
回答量:829
采纳率:0%
帮助的人:710万
展开全部
如果你没有写权限,默认就是包访问权限,而你两个类又不在一个包里,调用就会有问题,还有你对面向对象不是很清楚的时候,尽量不要使用抽象类,这和面向对象设计模式有关,还有就是组合优先继承,针对接口变成而不是类,这些可能有点抽象,慢慢你会理解的。

而且有继承关系的类,应该放到一个包里面。这也是设计原则之一
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yfq1981
2007-08-01 · 超过41用户采纳过TA的回答
知道答主
回答量:126
采纳率:0%
帮助的人:0
展开全部
权限及范围
private->类内部

default->类内部,同包无继承关系类,同包子类

protected->类内部,同包无继承关系类,同包子类,不同包子类

public->类内部,同包无继承关系类,同包子类,不同包子类,不同包无继承关系类
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式