频道栏目
首页 > 资讯 > Java > 正文

java基础多态特性实例讲解

17-12-30        来源:[db:作者]  
收藏   我要投稿

今天遇到一个问题,决定梳理一下java基础多态特性。

问题如下:

public class FatherClass {
    public String name = "FatherClass";
}

public class ChildClass extends FatherClass{
    public String name = "ChildClass";
}

public class Test001 {

    public static void main(String[] args) {
        FatherClass sc = new ChildClass();
        //这里打印出来的是什么
        System.out.println(sc.name);
    }

}

结果:

FatherClass

原因:

多态只有方法可以重写,变量不可以重写,在调用时,还是调用的父类的变量。

因为觉得是ChildClass,所以查找原因,这也是复习多态的契机

环境:JDK1.7

Eclipse Oxygen.2 Release (4.7.2)

例子1:

public class FatherClass {
    public void fun() {
        System.out.println("I'm FatherClass fun");
    } 
}

public class ChildClass extends FatherClass{
    public void fun() {
        System.out.println("I'm ChildClass fun");
    }
}

public class Test002 {

    public static void main(String[] args) {
        FatherClass sc = new ChildClass();
        sc.fun();
    }

}

结果:

I'm ChildClass fun

原因:

如果方法被重写,则调用子类的方法

例子2:

public class FatherClass {
    public void fun() {
        System.out.println("I'm FatherClass fun");
    } 
}

public class ChildClass extends FatherClass{
    public void fun() {
        System.out.println("I'm ChildClass fun");
    }

    public void privateMethod() {
        System.out.println("I'm ChildClass privateMethod");
    }
}

public class Test002 {

    public static void main(String[] args) {
        FatherClass sc = new ChildClass();
        sc.privateMethod();
    }

}

结果:

sc.privateMethod();这一行报错,因为父类的类型的引用不能调用父类中没有的方法

原因:

只能调用父类中定义的方法和变量

根据这两个例子,还有我遇到的第一个问题得出,多态就是父类类型指向子类对象,多态的表现方式其实就是继承,主要有四点:

1. 多态只有方法可以重写,变量不可以重写,在调用时,还是调用的父类的变量。

2. 如果方法被重写,则调用子类的方法。

3. 只能调用父类中定义的方法和变量

相关TAG标签
上一篇:c#之OpenFileDialog文件对话框使用实例
下一篇:android开发中适配问题解析
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站