码迷,mamicode.com
首页 > 编程语言 > 详细

java多态的理解

时间:2018-01-07 17:39:05      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:顺序   ring   size   alt   package   必须   引用类型   方法   class   

对于java中,非常重要的一个概念就是多态,但多态里面的很多坑是很容易被忽视的,在此,我总结一下我遇到的坑。

1、对于域和静态方法,是不存在多态的。demo如下:

package com.zh.model;

public class Test2 {
    public int index = 0;

    public int getIndex() {
        return index;
    }
    public static void main(String[] args) {
        Test2 test2 = new Child();
        System.out.println("test2.index="+test2.index+"  test2.getIndex()="
        +test2.getIndex());
        Child child = new Child();
        System.out.println("child.index="+child.index+"  child.getIndex()="
                +child.getIndex());
    }
}
class Child extends Test2{
    public int index = 1;

    public int getIndex() {
        return index;
    }

    public int getSuperIndex(){
        return super.index;
    }
}

输出结果为:技术分享图片

 2、父类没有默认构造器,有带参数的构造器时,子类必须显式编写调用父类构造器的语句super(。。。)

技术分享图片

如图,如果没有显式使用super关键字则会报错。

3、使用父类类型的引用指向子类的对象时多态加载顺序:即  在main‘方法中执行Parent parent = new Children();

先加载根基类中static初始化----根基类的子类static初始化----。。。。-----该类的static初始化-----对象中所有基本类型初始化为默认值,引用类型设为null-----调用父类构造器----调用子类构造器

 class Parent {
public static int parent = 1;
static {
System.out.println(parent);
}
public Parent() {
System.out.println("Parent");
}


public static void main(String[] args) {
Parent aaa = new Children();
}
}
class Children extends Parent{
public static int children = 2;
static {
System.out.println(children);
}
public Children() {
System.out.println("Children");
}
}

输出:技术分享图片

 

java多态的理解

标签:顺序   ring   size   alt   package   必须   引用类型   方法   class   

原文地址:https://www.cnblogs.com/DoJavaByHeart/p/8227969.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!