is not visible 不可见

is not visible 不可见

问题:

按照教材示例代码,最后一种情况,在类内定义没有初始化,在测试类的main方法中调用时赋值,没有显示正确结果,已赋值,为什么报错不可见?


相关代码:

Company2_8

package com.imooc.model;

//公司类
public class Company2_8 {
	String name;	//公司名
	String address;	//公司地址
	
	public Company2_8(String name,String address) {
		this.name=name;
		this.address=address;
	}
}

Staff2_8

package com.imooc.model;

//员工类
public class Staff2_8 {
	int age; // 员工年龄
	String name; // 员工姓名
	Company2_8 comp; // 所在公司
	//Company2_8 comp=new Company2_8("不知道啥公司","不知道啥位置");

	public Staff2_8(int age, String name) {
		this.age = age;
		this.name = name;
		if (this.comp == null)
			comp = new Company2_8("不知道啥公司", "不知道啥位置");
	}

	public void display() {
		System.out.println(
				"姓名:" + this.name + "\n年龄:" + this.age + "\n所在公司:" + this.comp.name + "\n公司地址:" + this.comp.address);
	}
}

Test2_8

package com.imooc.test;
import com.imooc.model.Company2_8;
import com.imooc.model.Staff2_8;

public class Test2_8 {

	public static void main(String[] args) {
		Company2_8 cp=new Company2_8("Esint","南开区");
		Staff2_8 st=new Staff2_8(30,"王五");
		st.comp=cp;
		st.display();
	}
}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小黑 2022-07-16 13:24:31

同学你好,在Staff2_8中由于comp的修饰符默认是缺省状态(default),default访问权限范围为:同包或同一个类中,而Test2_8和Staff2_8不属于同一个包,所以无法访问,建议同学将Staff2_8中的comp的访问权限改为public,或将Test2_8放在model包中。

祝学习愉快!

  • 提问者 EllaAzure #1

    Staff2_8类中,第7行,声明Company2_8 comp;,就是public呀?

    2022-07-16 14:00:29
  • 好帮手慕小黑 回复 提问者 EllaAzure #2

    同学你好,在编译器中不在属性、方法、类中写访问权限修饰符,编译器默认是缺省状态(default),而不是public。

    祝学习愉快!

    2022-07-16 14:09:57
  • 提问者 EllaAzure 回复 好帮手慕小黑 #3

    老师说的,不太理解 .....

    怎样修改访问权限?

    2022-07-16 19:54:45
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师