0 0

为什么子类中不能访问另一个包中父类中的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方法
OO 
2011年8月24日 08:41

5个答案 按时间排序 按投票排序

0 0

采纳的答案

这个是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
0 0

可以这样解释吧,子类可以继承父类的protected方法,并且在子类内部是可以访问的(就是在子类里调用this.printProtected(),或者super.printProtected())。但是这个方法对于子类来说也是protected的。
protected的含义就是本类可以访问,同一包内的可以访问,子类可以访问。

2011年8月24日 09:34
0 0

王八的屁股——龟腚啊

2011年8月24日 08:56
0 0

这个是JAVA关键字,它的作用就是这个样子的,没办法说出个所以然来啊

2011年8月24日 08:54
0 0

建议你复习一下JAVA的访问控制符

2011年8月24日 08:52

相关推荐

    Java子类的继承性

     如果子类和父类不在同一个包中,那么子类继承了父类的protected、public成员变量作为子类的成员变量,并且继承了父类的protected、public方法,继承的成员或方法的访问权限保持不变,但子类不能继承父类的友好...

    java中继承的使用案例

    (1)声明一个人类Person,放入以你的姓名为包名的包中,姓名为private类型属性,性别为protected类型变量,年龄为默认访问类型变量;该类有两个构造方法Person()和Person(姓名,性别,年龄),构造方法Person...

    重载与覆写/重写的区别

    (2)若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。  如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。 (3)子类函数的访问...

    Java面向对象程序设计.doc

    只能被同一个包中的类访问 " " " "4、下列关于修饰符混用的说法,错误的是( ) " "A.abstract不能与final并列修饰同一个类 " "B. abstract类中不可以有private的成员 " "C.abstract方法必须在abstract类中 " "D...

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

     final 说明一个类为最终类,即改类不能再有子类。  public 说明类为公共类,该类可以被当前包以外的类和对象使用。  private 说明类为私有类。 (4) extends 子句用于说明类的直接超类。 (5) implements ...

    java经典面试2010集锦100题(不看你后悔)

    C) 子类继承父类,如果父类中只有一个构造方法并且有参数,那么在子类的构造方法中必须先用super调用父类构造方法并传参。 D) 以上说法都不正确。 题目11:d 程序如下: class Test { private int day; public int...

    java 面试题 总结

    声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    9.3.2 String和StringBuffer一个都不能少 229 9.4 最熟悉的陌生人:main()方法 229 9.4.1 main()方法的参数 229 9.4.2 static关键字 232 9.4.3 当方法遇到static关键字 233 9.5 小结:学会使用类中的方法 235 ...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    9.3.2 String和StringBuffer一个都不能少 229 9.4 最熟悉的陌生人:main()方法 229 9.4.1 main()方法的参数 229 9.4.2 static关键字 232 9.4.3 当方法遇到static关键字 233 9.5 小结:学会使用类中的方法 235 ...

    【05-面向对象(下)】

    在外部类内部使用内部类-不要在外部类的静态成员中使用非静态内部类,因为静态成员不能访问非静态成 员。 • 2.在外部类以外使用非静态内部类。  –private 修饰的内部类只能在外部类内部使用。  –在外部...

    整理后java开发全套达内学习笔记(含练习)

    进行高精度运算可以用java.math包中BigDecimal类中的方法。 自动类型提升又称作隐式类型转换。 强制类型转换:int ti; (byte) ti ; 强制转换,丢弃高位 宣告变量名称的同时,加上“final”关键词来限定,这个...

Global site tag (gtag.js) - Google Analytics