-
为什么子类中不能访问另一个包中父类中的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
相关推荐
如果子类和父类不在同一个包中,那么子类继承了父类的protected、public成员变量作为子类的成员变量,并且继承了父类的protected、public方法,继承的成员或方法的访问权限保持不变,但子类不能继承父类的友好...
(1)声明一个人类Person,放入以你的姓名为包名的包中,姓名为private类型属性,性别为protected类型变量,年龄为默认访问类型变量;该类有两个构造方法Person()和Person(姓名,性别,年龄),构造方法Person...
(2)若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。 如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。 (3)子类函数的访问...
只能被同一个包中的类访问 " " " "4、下列关于修饰符混用的说法,错误的是( ) " "A.abstract不能与final并列修饰同一个类 " "B. abstract类中不可以有private的成员 " "C.abstract方法必须在abstract类中 " "D...
final 说明一个类为最终类,即改类不能再有子类。 public 说明类为公共类,该类可以被当前包以外的类和对象使用。 private 说明类为私有类。 (4) extends 子句用于说明类的直接超类。 (5) implements ...
C) 子类继承父类,如果父类中只有一个构造方法并且有参数,那么在子类的构造方法中必须先用super调用父类构造方法并传参。 D) 以上说法都不正确。 题目11:d 程序如下: class Test { private int day; public int...
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其...
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 ...
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 ...
在外部类内部使用内部类-不要在外部类的静态成员中使用非静态内部类,因为静态成员不能访问非静态成 员。 • 2.在外部类以外使用非静态内部类。 –private 修饰的内部类只能在外部类内部使用。 –在外部...
进行高精度运算可以用java.math包中BigDecimal类中的方法。 自动类型提升又称作隐式类型转换。 强制类型转换:int ti; (byte) ti ; 强制转换,丢弃高位 宣告变量名称的同时,加上“final”关键词来限定,这个...