在Java语言规范说
可以从包的外部访问对象的受保护成员或构造函数,而在包中只能通过负责该对象实现的代码声明该对象。
这意味着,如果要在原始类的包之外编写子类,则每个对象都可以在 其自身 上调用父类的受保护方法,而不能在其他对象上调用。
在您的示例中,由于与
s是不同的对象
this,因此您无法调用
s.fun()。但是对象可以自己调用
fun方法-with
this.fun()或just
fun()。

在Java语言规范说
可以从包的外部访问对象的受保护成员或构造函数,而在包中只能通过负责该对象实现的代码声明该对象。
这意味着,如果要在原始类的包之外编写子类,则每个对象都可以在 其自身 上调用父类的受保护方法,而不能在其他对象上调用。
在您的示例中,由于与
s是不同的对象
this,因此您无法调用
s.fun()。但是对象可以自己调用
fun方法-with
this.fun()或just
fun()。