`

Java继承中的"陷阱"问题

    博客分类:
  • Java
阅读更多

对于大都数Java初学者认为:子类可以继承父类中访问权限设定为public 、protected、default的成员变量和方法,但是不能继承访问权限为private的成员变量和方法。其实这个一个误区,下面来根据例子分析一下:

 

    父类代码:

public class A
{
    private String a;
    private String b;
    private String c;

    public A()
    {
        setA("a");
        setB("b");
        setC("c");
    }

    public String getA()
    {
        return a;
    }

    public void setA(String a)
    {
        this.a = a;
    }

    public String getB()
    {
        return b;
    }

    public void setB(String b)
    {
        this.b = b;
    }

    public String getC()
    {
        return c;
    }

    public void setC(String c)
    {
        this.c = c;
    }

    @Override
    public String toString()
    {
        return "A [a=" + a + ", b=" + b + ", c=" + c + "]";
    }

}

   子类代码:

public class B extends A
{
    public B()
    {
        setA("A");
        setB("B");
        setC("C");
    }

    @Override
    public String toString()
    {
        return "B [a=" + getA() + ", b=" + getB() + ", c=" + getC() + "]";
    }
}

   测试代码:

public class Test
{

    public static void main(String[] args)
    {
        A a = new A();
        B b = new B();
        System.out.println(a);
        System.out.println(b);
    }

}

   看完上面代码你认为结果是怎样的呢?

    A [a=A, b=B, c=C]

    B [a=A, b=B, c=C]

    或

    A [a=a, b=b, c=c]

    B [a=A, b=B, c=C]

 

    正确答案是:

    A [a=a, b=b, c=c]

    B [a=A, b=B, c=C]

 

原因:子类可以继承父类中除构造方法以外的所有方法和属性,只是私有的方法和属性都不能直接访问(相当于隐式继承),但是可以间接访问,如私有属性可以通过get、set方法进行间接访问,私有方法可以利用反射机制进行间接访问。

 

下面是调试和运行结果:


 
 

 



 

转载请注明出处: http://xieke90.iteye.com/blog/2260799

 

  • 大小: 8.4 KB
  • 大小: 24.4 KB
  • 大小: 27 KB
5
7
分享到:
评论

相关推荐

    Java基础方面陷阱.

    在Java内存管理和垃圾回收(GC)方面,面试中可能涉及对象的生命周期和内存泄漏的问题。理解什么时候对象会被垃圾回收,以及如何避免无用的对象引用,是避免内存泄漏的关键。 文件I/O操作在实际项目中经常用到,...

    java面试中的陷阱java面试中的陷阱

    ### Java面试中的陷阱知识点解析 在Java面试过程中,面试官往往会通过一些问题来考察应聘者对Java基础知识的理解深度以及在实际编程中解决问题的能力。本文将根据提供的标题、描述及部分内容,整理并归纳出一系列...

    Java 面试中的陷阱

    从给定的文件标题“Java面试中的陷阱”和描述“Java面试中一些常用问题的小总结”,我们可以提炼出一系列重要的Java知识点,这些知识点是面试官在评估候选人时常常关注的领域。下面将对这些知识点进行详细解析,以...

    Java面试中的陷阱

    Java面试中的陷阱往往涉及到对语言核心概念的深度理解,这些陷阱涵盖了从基本语法特性到高级设计模式的应用。面试官通常会通过一些看似简单但实际上需要深入理解的问题来测试候选人的技能和经验。 首先,我们来看看...

    Java程序员面试陷阱共48页.pdf.zip

    1. **基础概念陷阱**:面试中,Java的基础知识如类、对象、封装、继承、多态等经常被考到。求职者需要清晰理解这些概念,并能灵活应用。例如,对于多态的理解不应仅停留在语法层面,还应理解其背后的运行机制。 2. ...

    java程序员面试陷阱

    在Java程序员面试过程中,面试官可能会设置一些陷阱来测试应聘者的知识深度、问题解决能力以及对编程原理的理解。以下是一些常见的面试陷阱及其解析,帮助求职者更好地应对这些问题。 1. **异常处理陷阱**:面试官...

    Java Scjp 陷阱大全

    "Java SCJP 陷阱大全"显然是一份集合了Java编程中常见错误、陷阱和难点的资料,旨在帮助考生或者开发者避免在实际工作中遇到这些问题。以下将详细介绍Java SCJP考试中的一些关键知识点和常见陷阱: 1. **基本语法**...

    Java编程中static和final关键字的陷阱.pdf

    Java编程中static和final关键字的陷阱.pdf Java编程中static和final关键字的陷阱是Java开发中两个重要的关键字,但是它们的使用也存在一些陷阱,需要开发者注意掌握。 static关键字可以用于修饰属性、方法和类。...

    Java Scjp 陷阱大全.doc

    14. **负零等于正零**:`-0.0 == 0.0`在Java中是成立的,因为浮点数的比较考虑到精度问题。 15. **抽象类与非抽象方法**:抽象类可以包含非抽象方法,但至少需要有一个抽象方法来标识为抽象类。 16. **...

    Java程序员面试陷阱大全

    以下是从标题、描述、部分文件内容中提炼出的关键知识点,旨在帮助Java程序员深入理解并有效应对面试中的常见陷阱。 #### 1. Final关键字的特性与使用场景 - **不可变性**:一旦为一个对象或变量赋值为`final`,其...

    java面试陷阱题

    以下是一些重要的Java知识点,它们在面试中可能会成为“陷阱”,需要特别关注: 1. **内存管理与垃圾回收(GC)**:理解Java的内存模型,包括堆内存、栈内存、方法区以及新生代和老年代。知道如何触发垃圾回收,...

    Java中equals方法隐藏的陷阱

    ### Java中equals方法隐藏的陷阱 在Java编程中,正确实现`equals`方法至关重要,它不仅影响对象的比较逻辑,还直接关系到集合类(如`HashSet`、`HashMap`等)的行为。本文将深入探讨Java中`equals`方法的一些常见...

    java面试陷阱集合

    在Java面试中,面试官可能会提出一系列陷阱问题来测试候选人的理解深度和广度。以下是对这些陷阱问题的详细解释: 1. **final, finally, finalize**:final用于声明不可变的类、变量或方法;finally是异常处理中的...

    JAVA面试陷阱(网摘)

    在Java面试中,面试官常常会设置一些陷阱问题,考察候选人的基础知识和理解深度。以下是一些常见的陷阱问题及其解析: 1. **final, finally, finalize的区别** - `final`:这是一个修饰符,用于声明常量、类或方法...

    Java程序员面试陷阱大全.doc

    Java 程序员在面试过程中经常会遇到一些陷阱性的问题,这些问题旨在考察候选人的基础知识、理解深度以及问题解决能力。以下是一些重要的知识点解析: 1. **final, finally, finalize的区别** - `final`:这是一个...

    Java程序员面试陷阱大全.txt

    ### Java程序员面试陷阱详解 #### 一、抽象类与抽象方法的理解 **知识点:** - **抽象类(Abstract Class):** 在Java中,抽象类是一种特殊的类,它不能被实例化,即不能创建抽象类的对象。抽象类通常包含一个或...

    JAVA(教你如何面试+Web开发重点讲述+常见问题及解析)

    接着,"必须知道的261个java问题.txt"中包含的问题可能是Java开发者在日常工作中经常遇到的,这些问题涵盖了Java语言的各个方面,从简单的API使用到复杂的性能调优。了解这些问题及其解析,可以帮助你避免常见的编程...

Global site tag (gtag.js) - Google Analytics