继承定义:子类继承父类的特征和行为使得子类具有父类的各种属性和方法。或子类从父类继承方法,使得子类具有父类相同的行为。

多态定义看了很多,都觉得不够贴切,后来在一个同学的笔记中看到了如下的定义觉得很准确粘贴出来:

多态定义: 多态指的是子类对象可以直接复制给父类的变量(或者子类对象指向父类的引用),但运行时依然表现出子类的行为特征 这意味着同一个类型的对象在执行同一个方法时,可能会表现出不同的行为特征

解释:类中包含了类的行为(方法)和属性(变量),而多态只是针对类的行为特征即方法的,而不针对任何的变量。(因此下面笔试题中的  ‘System.out.println(parent.i);’输出的是引用类的成员变量0)。

因此有如下结论:

总结:多态指的是成员方法,对象的成员常量不具有多态性

 

在一次笔试题中遇到了一个问题:问输出结果是什么。回来试了一下,但是不知道在输出结果向上转型时i的值为什么是父类变量其中的原理,高手们请指教。

package demo.test;

//父类
class ParentClass {
    public int i = 0;
    
    public void test(){
        System.out.println("this is ParentClass");
    }

}

public class SubClass extends ParentClass{
    public int i = 1;
    public void test(){
        System.out.println("this is SubClass");
    }
    
    
    public static void main(String[] args) {
        SubClass     sub1     = new SubClass();
        ParentClass parent     = new SubClass();
        System.out.println(sub1.i);//1
        System.out.println(parent.i);//0
        sub1.test();//SubClass
        parent.test();//SubClass
    }
    /**
     *  1
        0
        this is SubClass
        this is SubClass

     */
}

后来在一个同学的笔记中看到了如下的定义觉得很准确粘贴出来:

(1)多态定义: 多态指的是子类对象可以直接复制给父类的变量(或者子类对象指向父类的引用),但运行时依然表现出子类的行为特征 这意味着同一个类型的对象在执行同一个方法时,可能会表现出不同的行为特征

总结:通过上面的示例说明:继承和多态

posted on 2015-04-18 06:26  张释文  阅读(426)  评论(0编辑  收藏  举报