关于java一个类(A)继承另一个类(B),在A中调用B的属性或方法或在其他类中创建一个A的对象调用A的属性,报错Type The field Item.name is visible。

1、调试程序说明:

编写类A(Armor)继承类B(Item)的属性,并在A类中创建A的对象调用B类的属性以及A自己的属性。
类B:
在这里插入图片描述
类A:
在这里插入图片描述

2、问题说明、解决:

1、在类A中调用name的过程中发现报错Type The field Item.name is visible,原因在于两个类不在同一个包中不能调用,要求父类的属性为public,子类的对象才能够通过 **“.属性”**进行调用并赋值。

在这里插入图片描述
在这里插入图片描述
将类Item改为如下图所示即可。
在这里插入图片描述

2、在其他类中创建A的对象进行调用ac时(如下代码块所示),如果ac并没有定义为public或private或其他的,就是默认的default,即不加任何访问修饰符,通常称为“默认访问模式“。该模式下,只允许在同一个包中进行访问。此时调试会报错Type The field Item.name is visible。将ac的定义为public即可(如下图)。

在这里插入图片描述

package code.Hero;
import code.armor.Armor;

public class Hero {
	float hp;		
	public static void main(String []arges)
	{						
		Armor bujia = new Armor();
		bujia.name = "布甲";
		bujia.price = 300;
		bujia.ac = 15;						
	}

}

关于修饰符public、private、protect、default。

public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”。被其修饰的类、属性以及方法不仅可以
跨类访问,而且允许跨包(package)访问。
private: Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”。被其修饰的类、属性以及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问。
protect: 介于public 和 private 之间的一种访问修饰符,一般称之为“保护形”。被其修饰的类、属性以及方法只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。
default:即不加任何访问修饰符,通常称为“默认访问模式“。该模式下,只允许在同一个包中进行访问。

写在最后:

其实问题1、2是一样的原因,只是不同发生情况,如果两个类在同一个包中是可以调用的,充分学习细节知识,就能解决问题。
文中有不当之处,请多指教,谢谢!
如还有不理解的话,参考链Java权限修饰符private、default(一般省略)、public、protected ,写的很详细,应该能帮到你(我看了之后帮到我了)。

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值