`

protected修饰的含义

阅读更多
今天将近花了三个小时才弄懂protected这个关键字的含义:
package July;

public class Clone1 {
	protected String name="clone1";
}

package clone;

import July.Clone1;

public class Clone2  extends Clone1{
	public void print() {
		Clone1 c = new Clone1();
		/*
		 * 此处报错:The field clone1.name is not visible
		 * 如果两个类在同一个包就不会报错
		 * 这里不会因为Clone2继承了Clone1而使得可以访问
		 */
		System.out.println(c.name);
		
		/*
		 * 可以通过new出本类对象访问形式访问
		 */
		Clone2 c2 = new Clone2();
		System.out.println(c2.name);
		/*
		 * 直接访问没错
		 */
		System.out.println(name);
	}
}

protected的访问权限是包内,类内和子类。这里的子类,要理解这个子类。
下面是在我在百度中提问后一个朋友的回答:
因为protected属于受保护的访问权限,一个类中的成员如果使用了protected访问权限,则只能被本包及不同包的子类访问。
很显然你的两个类不在同一个包,就因该用子类的实例对象访问,而你却在包含子类的包中中实例化了父类对象,你可能在想,我明明是在子类中实例化了父类对象,我要访问我自己的成员还不行吗?。。可你要想清楚,你的父类并不在这个包。(这时你在子类的包中用父类的实例化对象访问用protected修饰的属性,它压根就找不到,所以会报出不可见的错误)所以你必须用Clone2 c = new Clone2();c.name;或是用匿名对象
new Clone2().name;(其实是子类的一个匿名对象)访问。
0
0
分享到:
评论

相关推荐

    java中protected的权限

    本篇文章将深入探讨`protected`关键字的含义、用法以及它在实际开发中的应用。 1. `protected`的含义: `protected`是一种中级访问权限,它允许同一包内的所有类以及不同包中的子类访问被修饰的成员。相比于`...

    java 三个修饰符习题.zip

    让我们深入探讨这三个修饰符的含义和用法。 1. `public`: `public`是最宽松的访问控制修饰符,表示没有任何限制,无论在哪一个包内的哪个类都能访问。当一个类或方法被声明为`public`时,它可以在程序的任何地方...

    Eclipse各种图标含义

    * 对象修饰符(Object Adornment):表示一个对象修饰符,用于标记 Java 对象。 * 构造函数(Constructor):表示一个构造函数,用于初始化 Java 对象。 * 抽象成员(Abstract Member):表示一个抽象成员,用于声明...

    简单谈谈Ruby的private和protected

    本文将重点讨论`private`和`protected`两种访问控制修饰符,并通过示例代码来深入理解它们在Ruby中的具体含义。 #### 一、Private与Protected的基本概念 1. **Private**: - `private`方法只能在定义它的类或其...

    Java四种变量特性

    在Java编程语言中,变量的访问控制是通过四种访问修饰符来实现的,它们分别是`public`、`private`、`protected`以及默认的(无修饰符,也称为`default`)。这些修饰符决定了变量在类的不同部分以及不同类之间的可见...

    JAVA学习笔记第七天——示例代码Day07

    protected修饰的成员在同一个包内或不同包的子类中可以访问;而无修饰符的成员(默认)只能在同一包内的类中访问。理解并合理运用这些修饰符,能有效控制类的封装性和安全性。 接着,我们看final关键字。final在...

    java面试题目答案.doc

    Protected修饰的成员可以在同一包内的类中访问,也可以在不同包中的子类中访问。这种设计允许子类扩展父类的功能,同时限制了非子类的直接访问。这在实现多态性和继承时非常有用,但又防止了不必要的暴露。 4. **...

    基于Java protected的深入理解

    Java中的`protected`关键字是访问控制修饰符之一,用于定义类的成员(如方法和字段)。`protected`提供了一种保护机制,使得这些成员只对同一包内的类和不同包中的子类可见。在这个深入理解中,我们将详细探讨`...

    Java中的private、protected、public和default的区别(详解)

    下面我们将详细解释这四种修饰符的含义和使用场景。 1. `public`: - 公共访问修饰符`public`提供了最大程度的访问权限。任何在CLASSPATH下的类、接口和异常都可以无限制地访问`public`修饰的成员。通常,我们用`...

    举例详解Java中的访问权限修饰符

    下面将详细解释这些访问权限的含义和使用场景。 1. **public**: - 成员(方法、变量):任何类在任何地方都能访问。 - 类:任何类在任何地方都能实例化和访问。 2. **friendly/default**: - 成员:没有明确...

    C#常用关键字及含义.doc

    * protected:一个访问修饰符,保护成员只能在定义该成员的类型或派生类型中访问。 * public:一个访问修饰符,公有成员可以在定义该成员的类或命名空间内外自由访问。 这些关键字是 C# 语言的基础,通过掌握它们,...

    eclipse图标的含义

    以下是一些常见的Eclipse图标及其含义: 1. **绿色圆圈**:这个图标表示一个`public`类、接口或类型。`public`是Java访问修饰符之一,意味着该元素可以在任何地方被访问。 2. **蓝色三角形**:这个图标代表默认...

    JavaSE基础(标识符+关键字+字面量+数据类型+类型转换+修饰符+代码块+方法重载+this关键字等)

    修饰符用于限定类、方法、变量的访问权限和特性,如public、private、protected、final、static等。代码块和方法重载则是组织和复用代码的方式,代码块是一组语句,而方法重载是指在同一个类中可以有多个同名但参数...

    java四种作用域的说明.doc

    - **定义**:`protected`修饰的成员变量或方法可以在同一包下的其他类和不同包中的子类访问。 - **示例**: ```java class BaseClass { protected int myProtectedVariable; protected void myProtectedMethod()...

    C语言32以及C++63个关键字及其含义[定义].pdf

    9. const:常量的,constant所修饰的对象或变量不能被改变,修饰函数时,该函数不能改变在该函数外面声明的变量也不能调用任何非const函数。 10. const_cast:用法:const_cast<type_id> (expression)该运算符用来...

    T6课堂笔记(1.2).doc

    - **protected**:受保护的访问修饰符,允许在同一个包内和不同包的子类中访问。这是为了实现继承时的访问控制。 - **public**:公共访问修饰符,对所有类都是可见的,无论它们在哪个包中。这是最宽松的访问权限,...

Global site tag (gtag.js) - Google Analytics