【发布时间】:2015-05-09 13:19:07
【问题描述】:
我正在学习 Java 访问修饰符。为此,我创建了一个类Machine:
package udemy.beginner.interfaces;
public class Machine {
public String name;
private int id;
protected String description;
String serialNumber;
public static int count;
public Machine(){
name = "Machine";
count++;
description = "Hello";
}
}
然后,在另一个包中,我创建了一个类Robot作为汽车Machine的子类:
package udemy.beginner.inheritance;
import udemy.beginner.interfaces.Machine;
public class Robot extends Machine {
public Robot(){
Machine mach1 = new Machine();
String name = mach1.name;
//here I am getting error "The field Machine.description is not visible"
String description = mach1.description;
}
}
尝试访问 Robot 类中的字段 description 时出现错误。根据我对protected 访问修饰符如何工作的理解,它应该没问题,但也许我搞砸了。有什么想法吗?
编辑:我试图将Robot 类移动到与Machine 类所在的包相同的包中,现在它可以工作了,无需使用它。如果有人可以解释我this。根据下面的答案,它不应该也能正常工作......
【问题讨论】:
-
protected 表示:来自继承的类并且在同一个包中。下面的 6.6.2 说:对象的受保护成员或构造函数只能通过负责该对象的实现。 从包内部可以访问它。