`
xtuhuajx
  • 浏览: 13509 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
最近访客 更多访客>>
社区版块
存档分类
最新评论

子类访问父类 权限问题

    博客分类:
  • java
 
阅读更多

父类

package com.p1;
public class A{
protected void call(){
	}
}

 

子类

 

package com.p2;
 public class B extends A{
   public static void main(String[] args) {
      new A().call();//有问题
      new B().call();//没问题
      }
}

 

 原因:

包优先于protected !如果不同包的继承,protected是不能被子类访问的。

如果你用的是父类对象,那肯定是不可以的。

如果用子类对象,那是可以的,我想这就是多态的表现吧。

1
2
分享到:
评论
3 楼 piao_bo_yi 2010-01-04  
我回去查了一下,
1.JAVA继承是指从父类得到了相应的方法和字段,但并不是指你可以访问父类的方法或字段。所以从根本来说,你就不能通过父类的对象访问其方法。
2.为什么在同一包内子类可以通过父类对象访问父类方法和字段呢?那是因为JAVA中的Protected集合了包的概念,可以被同一包内所有类访问。
2 楼 piao_bo_yi 2009-12-28  
上次我没弄清楚概念,道歉一下。不过这个不是多态的表现。多态是指调用父类的方法,而执行的却可以是子类的方法。
1 楼 piao_bo_yi 2009-11-12  
包优先于protected !如果不同包的继承,protected是不能被子类访问的。
LZ概念没搞清楚。

相关推荐

    java子类重写父类的方法.doc

    例如,如果父类的方法是包访问权限,子类的重写方法可以是公有访问权限,但不能是私有访问权限。否则,编译器将报错。 B. 重写规则之二:参数列表必须与被重写方法的相同 子类重写父类的方法时,参数列表必须与被...

    java中的继承(子类调用父类构造方法还不懂).doc

    `super` 可用于访问父类中定义的属性、调用父类中定义的成员方法、在子类构造方法中调用父类的构造方法。`super` 的追溯不仅于直接父类,就是 father 的 father。。。。 多态是 Java 中的一种机制,可以实现方法的...

    Java编程关于子类重写父类方法问题的理解

    子类重新实现父类的方法称为重写,重写时可以修改访问权限修饰符和返回值,但方法名和参数类型及个数不能修改。只有当返回值为类类型时,重写的方法才可以修改返回值类型,且必须是父类方法返回值的子类。 那么,该...

    java反射获取所有属性,获取所有get方法,包括子类父类

    要获取类的所有属性(包括public、private、protected以及默认访问权限的属性),可以使用以下代码: ```java Class<?> clazz = Class.forName("全限定类名"); Field[] fields = clazz.getDeclaredFields(); // ...

    父类引用指向子类对象

    当`main`方法在父类中,或者在与父类同包的其他类中时,可以访问父类和子类的`default`、`protected`、`public`属性和方法。如果`main`在其他包中,只能访问`public`属性和方法。 总的来说,父类引用指向子类对象是...

    PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作详解

    关于方法的重写,PHP允许子类覆盖父类的方法,但需要注意的是,子类中重写的方法访问权限不能低于父类被覆盖的方法。例如,如果父类的方法是`public`,那么子类中重写的方法也必须是`public`。如果父类的方法是`...

    Java 限制子类访问的方法分析

    这可以帮助保护父类中的“隐私”,避免子类访问父类中的某些敏感信息。 在实践中,我们可以通过以下方式来限制子类的访问: 1. 在父类中声明private成员变量或方法 2. 在子类中使用super关键字来访问父类中的成员...

    Java子类的继承性

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

    Java、C++中子类对父类函数覆盖的可访问性缩小的区别介绍

    在 Java 的例子中,如果允许子类缩小函数的访问权限,可能导致以下问题: ```java Base base = new Base(); base.sayHello(); // 正常调用父类方法 base = new Child(); base.sayHello(); // 如果子类sayHello是...

    day13-面向对象-继承&包和访问权限

    - 子类重写的方法访问权限需大于等于父类方法的访问权限。 - 返回值类型必须是父类方法的返回值类型或其子类类型。 - 子类不能抛出比父类更多的异常。 4. 重载(Overload) 重载是指在同一个类中,方法名相同但参数...

    Java中子类.pdf

    * 子类可以继承父类中访问权限设定为public、protected的成员变量和方法 * 子类不能继承父类中访问权限设定为private的成员变量和方法 子类中的成员变量的隐藏和方法的覆盖: * 在子类中出现与父类同名、同返回...

    预习资料 (1)1

    - protected成员允许当前类和子类访问。 4. 继承中的构造和析构函数: - 构造函数:创建对象时,构造函数负责初始化对象的属性。子类构造函数在执行前会先调用父类的构造函数,确保继承的成员得到初始化。如果...

    java 子类构造方法

    通常,子类能够访问父类的受保护和公共构造方法。 总结,Java子类构造方法的使用涉及到继承、初始化、方法调用等多个概念。正确理解和运用这些知识点对于编写健壮的Java程序至关重要。通过熟练掌握这些内容,开发者...

    访问权限及继承

    1. **继承与可见性**:子类可以访问父类的所有public和protected成员,但不能访问private成员。这保证了封装性,防止了不安全的直接访问。 2. **覆盖与访问权限**:如果子类覆盖了父类的方法,其访问权限不能低于...

    java 访问权限验证

    2. **protected**:受保护的访问权限,允许同一包内的类和所有子类访问。 3. **默认(无修饰符)**:默认访问权限,只允许同一包内的类访问。 4. **private**:私有访问权限,仅限于声明它的类内部访问。 **二、...

    继承和接口和java访问权限修饰符总结.doc

    继承和接口和java访问权限修饰符总结 本文总结了 Java 中的继承、接口和访问权限修饰符的概念和使用。继承是 Java 中的一种机制,允许子类继承父类的属性和方法,並且可以对父类的方法进行重写或重载。动态绑定是指...

    黑马程序员Java基础视频辅导班课堂笔记总结Day08

    子类可以直接访问父类中非私有的成员变量和方法。 继承的特点是只支持单继承(如果多个父类存在相同方法,子类调用哪一个呢),支持多层继承(A继承B,B继承C)。继承中子父类的成员特点是,成员变量如果子父类中...

    第05章 面向对象(下) 03 方法重写与super关键字

    2. **访问父类字段**:如果子类和父类中有同名的字段,可以通过`super.field`来明确地访问父类的字段,避免混淆。 3. **调用父类方法**:如果子类重写了父类的方法,可以通过`super.method()`来调用父类的原始方法...

    java类的继承详解说明

    如果想访问父类的同名变量,可以使用 super 关键字或者父类类名。 重写父类的方法 子类除了增加新的成员变量和方法外,还可能会重写父类的方法。重写父类的方法需要遵守“两同两小一大”原则:方法名相同、参数...

    Java访问权限控制源代码

    这对于继承机制尤其有用,子类可以访问父类的受保护成员。 3. **默认(无修饰符)**:默认访问级别,也称为包私有。只有在同一包内的类才能访问这些成员。这是最常见的访问级别,用于那些不需要外部访问的内部实现...

Global site tag (gtag.js) - Google Analytics