学过java的都知道,protected的访问权限对子类来说,无论在包里还是保外都能访问的,真实情况是什么样的呢?同包下的子类继承就不研究了,主要看下不同包下的子类
父类:
package com.father; public class Father1 { String name; public int age; protected String color; }
子类:
package com.son; import com.father.Father1; public class Son extends Father1{ public static void main(String[] args) { String c; // TODO Auto-generated method stub Father1 f = new Father1(); c = f.color;//无法访问,报错 Father1 f = new Son(); c = f.color;//无法访问,报错 Son s = new Son(); c = s.color;//正常 } }
在Son类中新建个副类:
class Son2 extends Son{
public static void main(String[] args) {
String c;
Son s = new Son2();
c = s.color;//无法访问,报错
Son2 s2 = new Son2();
c = s2.color;//正常
}
由此可以看出只能是子类自己的实例对象才能访问父类protected,其他的都不能访问
这里再给出《java in a nutshell》中的一段话:
protected access requires a little more elaboration. Suppose class A declares a protected field x and is extended by a class B, which is defined in a different package (this last point is important). Class B inherits the protected field x, and its code can access that field in the current instance of B or in any other instances of B that the code can refer to. This does not mean, however, that the code of class B can start reading the protected fields of arbitrary instances of A! If an object is an instance of A but is not an instance of B, its fields are obviously not inherited by B, and the code of class B cannot read them.
相关推荐
`protected`是Java中四种访问权限之一,它在类的封装和继承中扮演着重要的角色。本篇文章将深入探讨`protected`关键字的含义、用法以及它在实际开发中的应用。 1. `protected`的含义: `protected`是一种中级访问...
protected 关键字允许访问权限扩展到同一包内的任何类,以及不同包中的子类。这使得子类可以访问并可能修改父类的受保护成员,但限制了包外的类直接访问这些成员。 3. **public**:公共的。public 关键字允许无限制...
`public`、`private`、`protected`是访问修饰符,用于控制类、方法和变量的访问权限。`public`可以被任何地方访问,`private`只能在定义它的类内部访问,`protected`在同包内或子类中可访问。`static`关键字用于声明...
Java 访问修饰符(public、protected、默认、private) Java 中的访问修饰符是 Java 语言中一种基本概念,用于控制类、方法、变量、构造方法等成员的访问权限。 Java 中有四种访问修饰符:public、protected、默认...
`protected` 是 Java 中的一个访问修饰符,用于限制类成员的访问权限。`protected` 成员可以在同一个包内的类或者子类中访问。例如: ```java public class Person { protected String name; } ``` ### 23. ...
- `private` 访问修饰符,限制访问权限,仅限于在同一类内部。 32. `protected`: - `protected` 访问修饰符,允许子类和同一包内的类访问。 33. `public`: - `public` 是最高级别的访问修饰符,允许任何地方...
6. **访问控制关键字**:`public`、`private`、`protected` 和 `default` 控制成员的访问权限。 7. **修饰符关键字**:`final` 用于创建不可变对象或常量,`abstract` 用于声明抽象类或方法,`static` 创建静态成员...
这些关键字定义了Java语言的基本语法结构,例如`class`用于定义类,`public`用于声明公开访问权限。 **3. 关键字的使用** - **注意事项**:关键字不可用作标识符,如类名、变量名等。 - **保留关键字**:`goto`是...
在 Java 语言中,访问权限修饰符是指用来限定类、成员变量和方法的可访问范围的关键字。访问权限修饰符分为四种:public、protected、friendly 和 private。每种修饰符都有其特定的访问权限和使用场景。 一、public...
2. `private`: 相反,`private` 关键字限制了访问权限,使得只有在同一个类内部才能访问该成员(变量或方法)。 3. `protected`: 这是介于`public`和`private`之间的一个访问修饰符,允许子类访问受保护的成员。 4...
4. **访问权限控制**:`super`关键字不能访问父类的私有(private)成员,但可以访问保护(protected)和包内(default)的成员。这是因为私有成员的访问仅限于同一类内部,而受保护和默认访问级别的成员在子类中是...
修饰符如`private`, `public`, `protected`定义了访问权限,`final`, `static`, `abstract`, `native`, `synchronized`, `volatile`, `strictfp`, `transient`分别用于定义不可变对象、静态成员、抽象方法、本地方法...
31. protected: 修饰符,表示类中成员的访问权限为受保护的。 32. public: 修饰符,表示类中成员的访问权限为公有的。 33. return: 用于从方法中返回值。 34. short: 基本数据类型,表示16位的有符号整数。 35. ...
32. `private`:私有的,限制访问权限,只能在定义它的类内部访问。 33. `protected`:受保护的,可以在同一包内的类或子类中访问。 34. `public`:公开的,可以被任何地方的代码访问。 35. `return`:从方法中...
30. **私有(Private)**: `private` 访问修饰符,限制访问权限,仅限于同一类内的访问。 31. **受保护(Protected)**: `protected` 访问修饰符,允许子类和同一包内的类访问。 32. **公共(Public)**: `public`...
31. `protected`:比`private`更宽松的访问级别,允许同一包内的类和子类访问。 32. `public`:最高级别的访问权限,允许所有代码访问。 33. `return`:结束方法并返回一个值,如果方法无返回值,则只用于结束方法...
修饰符关键字用于控制类、方法和变量的访问权限和其他特性。 ##### 1. 访问修饰符 - **private**:私有修饰符,限制访问仅限于类内部。 - **protected**:保护修饰符,允许类本身、子类以及同一包中的其他类访问。 ...
它限制访问权限,只允许在同一个包内的类或子类访问被`protected`修饰的成员。例如: ```java public class Teacher { protected float salary; protected void display() { System.out.println("薪水是:" + ...
23. `public`: 修饰符,表示方法或变量可以在任何地方访问,是最高的访问权限。 24. `return`: 结束方法执行,并返回一个值(如果方法声明了返回值)。 25. `short`: 定义短整型变量,用于存储较小的整数值。 26....
在Java编程语言中,保留字(Reserved Words)和关键字(Keywords)是两个非常重要的概念,它们构成了Java语法的基础。保留字是Java语言已经预定义并赋予特定含义的词汇,而关键字则是Java语法结构中不可或缺的部分。...