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

java 多态

时间:2020-01-04 12:26:06      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:抽象   interface   abs   rgs   system   抽象方法   inf   inter   eth   

多态为java的三大特性之一,了解学习多态,将更了解java。

多态实现条件

  • 继承与重写(方法的多态性)
  • 接口(对象的多态性)
  • 抽象类与抽象方法(对象的多态性)

向上转型和向下转型

  • 向上转型:父类 父类对象 = 子类实例
  • 向下转型:子类 子类对象 = (子类)父类对象
  • 当父类需要调用子类的扩充方法时才需要向下转型
  • 向下转型之前必须要先向上转型

Test.java

abstract class A {//抽象类的多态
    abstract void printA();
}

class TestA extends A {
    void printA() {
        System.out.println("class TestA extends abstract A");
    }
    void printTestA() {
        System.out.println("printTestA methods");
    }
}

interface B {//接口的多态
    void printB();
}

class TestB implements B {
    public void printB() {
        System.out.println("class TestB implements B");
    }
    void printTestB() {
        System.out.println("printTestB methods");
    }
}

public class Test {
    public static void main(String []args){
        System.out.println("---------A-------");
        A a = new TestA();//向上转型:父类 父类对象 = 子类实例
        a.printA();
        //testa.printTestA();//会报错,向上转型,因为父类访问不了子类中方法
        TestA testa = (TestA)a;//向下转型:子类 子类对象 = (子类)父类实例,向下转型和向上转型是一体的
        testa.printTestA();
        System.out.println("---------B-------");
        TestB testb = new TestB();//不想用向上向下转型可直接用子类实现
        testb.printB();                                                                                                                                                                                      
        testb.printTestB();
    }
}

运行结果

技术图片

java 多态

标签:抽象   interface   abs   rgs   system   抽象方法   inf   inter   eth   

原文地址:https://www.cnblogs.com/jizizh/p/12148304.html

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