1、protected的类、类属变量及方法,包内的任何类,及包外的那些继承了此类的子类才能访问;
注意:子类如处于不同的包,则相互间不能访问继承自父类的方法。
所有不能访问的方法都已经被注释:
package packageA;
public class Base {
public String publicStr = "publicString";
protected String protectedStr = "protectedString";
String defaultStr = "defaultString";
private String privateStr = "privateString";
public void print() {
System.out.println("packageA.Base has access to");
System.out.println(" " + publicStr);
System.out.println(" " + protectedStr);
System.out.println(" " + defaultStr);
System.out.println(" " + privateStr);
Base b = new Base(); // -- other Base instance
System.out.println(" b." + b.publicStr);
System.out.println(" b." + b.protectedStr);
System.out.println(" b." + b.defaultStr);
System.out.println(" b." + b.privateStr);
}
}
--------------------------------------------------------------------------------
package packageA;
public class SubA extends Base {
public void print() {
System.out.println("packageA.SubA has access to");
System.out.println(" " + publicStr + " (inherited from Base)");
System.out.println(" " + protectedStr + " (inherited from Base)");
System.out.println(" " + defaultStr + " (inherited from Base)");
// -- not accessible - private elements are even not inherited
// System.out.println(privateStr);
Base b = new Base(); // -- other Base instance
System.out.println(" b." + b.publicStr);
System.out.println(" b." + b.protectedStr);
System.out.println(" b." + b.defaultStr);
// -- not accessible
// System.out.println(b.privateStr);
}
}
--------------------------------------------------------------------------------
package packageA;
public class AnotherA {
public void print() {
System.out.println("packageA.AnotherA has access to");
Base b = new Base();
System.out.println(" b." + b.publicStr);
System.out.println(" b." + b.protectedStr);
System.out.println(" b." + b.defaultStr);
// System.out.println(b.privateStr);
}
}
--------------------------------------------------------------------------------
package packageB;
import packageA.Base;
public class SubB extends Base {
public void print() {
System.out.println("packageB.SubB has access to");
System.out.println(" " + publicStr + " (inherited from Base)");
// -- protectedStr is inherited element -> accessible
System.out.println(" " + protectedStr + " (inherited from Base)");
// -- not accessible
// System.out.println(defaultStr);
// System.out.println(privateStr);
Base b = new Base(); // -- other Base instance
System.out.println(" b." + b.publicStr);
// -- protected element, which belongs to other object -> not accessible
// System.out.println(b.protectedStr);
// -- not accessible
// System.out.println(b.defaultStr);
// System.out.println(b.privateStr);
}
}
--------------------------------------------------------------------------------
package packageB;
import packageA.Base;
public class AnotherB {
public void print() {
System.out.println("packageB.AnotherB has access to");
Base b = new Base();
System.out.println(" b." + b.publicStr);
// -- not accessible
// System.out.println(b.protectedStr);
// System.out.println(b.defaultStr);
// System.out.println(b.privateStr);
}
}
--------------------------------------------------------------------------------
import packageA.*;
import packageB.*;
// -- testing class
public class TestProtection {
public static void main(String[] args) {
// -- all classes are public, so class TestProtection
// -- has access to all of them
new Base().print();
new SubA().print();
new AnotherA().print();
new SubB().print();
new AnotherB().print();
}
}
分享到:
相关推荐
NULL 博文链接:https://837062099.iteye.com/blog/1609340
@public ,@package,@private,@protected访问权限描述
(3) 有一个protected访问权限的方法getFace(),得到扑克牌的牌面值 (4) 有一个protected访问权限的方法getSuit(),得到扑克牌的牌面值 (5) 有一个重写方法toString(),返回表示扑克牌的花色和牌面值字符串(如...
1.写一个名为Rectangle的类表示...定义protected访问权限的方法getFace(),得到扑克牌的牌面值; 定义protected访问权限的方法getSuit(),得到扑克牌的花色; 定义方法toString(),返回表示扑克牌的花色和牌面值字符串。
用java代码来解析private、public、default、protected的权限问题
编写一个People类.该类的数据成员有年龄age,身高height,...假设年龄的单位为岁,身高的单位厘米,体重的单位斤,要求所有数据成员为protected访问权限,所有成员函数为public,在主函数中通过对象直接访问类的所有成员函数.
初学C++的朋友经常在类中看到public,protected,private以及它们在继承中表示的一些访问范围,很容易搞糊涂。今天本文就来十分分析一下C++中public、protected及private用法。相信对于大家深入掌握C++程序设计会有...
C++的类的成员只有public protected private这三种访问权限吗? 其实,对于有继承关系的子类来说,有四种访问权限,下载这篇文档,我将为您阐述第四种访问权限。
方法F1无法被访问 B.只有在类O内才能访问方法F1 C.只有在类P内才能访问方法F1 D.只有在类Q内才能访问方法F1 (27)A.类O、P和Q的对象都可以访问方法F2 B.类P和Q的对象都可以访问方法F2 C.类0和Q的对象...
它解释了public、private、protected和默认访问级别的含义和用法,以及它们在类、接口、成员变量和方法中的应用。 能学到什么 通过阅读本文档,您将学习以下内容: 不同访问控制权限修饰符的作用和使用场景 如何...
PHP中有三种访问修饰符,分别是: public(公共的、默认) protected(受保护的) private(私有的)public(公共的、默认)在PHP5中如果类没有指定成员的访问修饰符,默认就是public的访问权限。protected(受...
protected表示受保护的访问权限,只有本类或子类或父类中可以访问; 比较经典的用法示例如下: <?php //父类 class father{ public function a(){ echo function a ; } private function b(){ echo ...
父子类可以是不同包 在不同包下面只有public 与 protected 可以访问,而且protected必须是在继承关系下才能够访问
下面小编就为大家带来一篇浅谈php中的访问修饰符private、protected、public的作用范围。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
编写四个类A、B、C、D,其中类A、B在同一个包中,类C、D在另一个包中,且类C为类A的子类,通过这四个类来测试private,protected,public和friendly四个访问权限的区别。实现栈的基本操作。实现计算器。
主要介绍了浅析Java中的访问控制权限,在Java中,提供了四种访问权限控制,分别是默认访问权限、public、private以及protected,感兴趣的小伙伴们可以参考一下
protected修饰符用于设置类或类成员的访问权限仅为所属类及子类的内部。 3.internal修饰符 internal修饰符修饰的类或类成员的访问权限为同一程序集内部,C#默认的类访问修饰符即为internal。 4.public修饰符 public...
Java有四种访问权限,其中三种有访问权限修饰符,分别为private,public和protected,还有一种不带任何修饰符,下面通过本文给大家简单介绍下java修饰符访问权限相关知识,感兴趣的朋友一起学习吧
一个C++类中的变量如果如下关键字作为修饰符. 1. public: 程序的任何地方都可以访问. 2 protected: 只有类本身及其派生...1、当在类的内部使用这三个关键字,表示访问权限: public: 可以被任意访问。 protected: