-
为什么子类中不能访问另一个包中父类中的protected方法3
package java1;
public class TestBase
{
protected void printProtected()
{
System.out.println("printProtected!");
}
}
import java1.TestBase;
class Child extends TestBase
{
protected void printProtected()
{
System.out.println("child printProtected!");
}
public static void main(String[] args)
{
TestBase base= new Child();
base.printProtected(); //编译报错
}
}
为什么子类中不能访问另一个包中父类中的protected方法2011年8月24日 08:41
5个答案 按时间排序 按投票排序
-
采纳的答案
这个是java语言规范的规定了:
引用
A protected member or constructor of an object may be accessed from outside the package in which it is declared only by code that is responsible for the implementation of that object.
protected,算是默认的访问作用域的超集,他们在相同包下时,都可以访问所声明的成员;但对于不同包的访问,默认访问域就不行,protected也必须是通过继承关系来访问。
TestBase base= new Child(); base.printProtected(); //编译报错
这个会出错,是因为你在不同包里访问TestBase声明的printProtected方法,所以不行,你可以在你子类的printProtected通过super来访问父类的方法。2011年8月24日 09:32
-
可以这样解释吧,子类可以继承父类的protected方法,并且在子类内部是可以访问的(就是在子类里调用this.printProtected(),或者super.printProtected())。但是这个方法对于子类来说也是protected的。
protected的含义就是本类可以访问,同一包内的可以访问,子类可以访问。2011年8月24日 09:34
相关推荐
如果子类和父类在不同包中,子类中`default`访问权限的属性和方法对父类引用来说也是不可见的。 测试代码通常会包含`main`方法,这是程序的入口点。当`main`方法在父类中,或者在与父类同包的其他类中时,可以访问...
- **示例:** 如果一个方法或变量被声明为 `protected`,那么它可以在声明它的类内部、同一个包中的其他类以及不同包但作为其子类的类中被访问。但是,在不同包且不是子类的类中是不可见的。 **3. 默认:** - **...
当一个类的成员被声明为`protected`时,它的子类无论在哪个包中都可以访问这个成员。这是为了保证子类能访问并可能重写父类的某些功能,以实现多态性。例如,Java集合框架中的`AbstractList`类,它的一些方法如`...
- 在Java中,子类无法直接继承父类私有的成员,也不能重写父类的final方法。但是,子类可以继承不同包中的父类的受保护(`protected`)属性。因此,正确答案是 **C. 子类能够继承不同包父类的protected属性**。 11. ...
如果子类和父类不在同一个包中,那么子类继承了父类的protected、public成员变量作为子类的成员变量,并且继承了父类的protected、public方法,继承的成员或方法的访问权限保持不变,但子类不能继承父类的友好...
1. **继承与可见性**:子类可以访问父类的所有public和protected成员,但不能访问private成员。这保证了封装性,防止了不安全的直接访问。 2. **覆盖与访问权限**:如果子类覆盖了父类的方法,其访问权限不能低于...
类的继承是面向对象编程的一个核心特性,它允许一个类(子类)继承另一个类(父类)的属性和方法,从而实现代码的复用和扩展。下面将详细探讨`extends`关键字在Java中的使用、特点以及相关知识点。 1. **类的继承...
而在不同包中,子类只能访问父类的`protected`和`public`成员。在`E`类的示例中,`B`类继承自`A`类,并有一个自己的`double`类型变量`y`,但这里省略了`setY`方法的实现。 总的来说,Java的子类与继承机制提供了...
在同一个包中,子类可以继承父类的非 private 修饰的成员变量和方法,而在不同包中,子类可以继承父类的 public 和 protected 修饰的成员变量和方法。 继承的好处包括代码重用、简化代码和提高代码的可维护性等。...
在类 B 中,我们可以使用 protected 访问控制符来保护方法 b3,使其只能在本包中或继承的子类中访问。 在 Java 中,我们可以使用继承来实现类之间的调用。例如,我们可以定义一个父类,并在子类中继承父类的方法和...
这意味着,即使类和子类不在同一个包内,只要存在继承关系,`protected`成员仍然可以被子类访问。这种设计增强了代码的可扩展性和重用性,但同时也需要开发者谨慎处理,防止过度暴露内部实现细节。 为了更深入理解...
(1)声明一个人类Person,放入以你的姓名为包名的包中,姓名为private类型属性,性别为protected类型变量,年龄为默认访问类型变量;该类有两个构造方法Person()和Person(姓名,性别,年龄),构造方法Person...
在 Java 中,访问修饰符 `protected` 表示该成员变量或方法可以被同一个包中的子类访问。如果子类的对象的 `protected` 成员变量或方法是从父类继承的,那么就要一直追溯到该 `protected` 成员变量或方法的“祖先”...
public修饰的类成员允许所有类访问,private修饰的类成员只能被这个类的方法直接访问,protected修饰的类成员允许其子类继承,default修饰的类成员除了允许被其归属的类访问外,还允许同一个包中的其他类访问。...
+ 接口中有 N 个方法,子类一定要实现 N 个方法,可以通过接口名称直接访问接口中的属性。 + 接口可继承接口,但没有任何意义! JAVA 访问修饰符是 JAVA 语言中的一种基本概念,控制着类、方法、变量的访问权限,...
在Java编程语言中,继承是面向对象编程的一个核心特性,它允许一个类(子类)继承另一个类(父类)的属性和方法。这个过程被称为“扩展”或使用关键字 `extends`。本教程将深入探讨如何在Java中使用 `extends` ...
- 子类不能访问父类的private成员,即使在同一个包内也不行。 7. **访问权限与多态**: - 多态性允许子类对象通过父类引用调用父类中的public和protected方法,这是面向对象设计的重要特性。 8. **访问权限与...
方法重写是指子类提供了一个与父类中的方法同名、同参数的方法,但子类的方法可以有不同的实现。子类的方法可以调用父类的方法,使用 super 关键字。 方法重载 方法重载是指同一个类中可以有多个同名的方法,但...
3. **不在同一包中的继承**:在不同包中,子类只能继承`public`和`protected`成员,无法继承父类的`friendly`(包访问权限)变量和方法。 **子类对象的构造过程**: 创建子类对象时,子类的构造器会先调用父类的...