zoukankan      html  css  js  c++  java
  • 多态

    多态

    多态可以实现java程序中的动态编译,提高可扩展性。

    多态的含义是”一种定义,多种实现“,顾名思义,就是实现多功能的目的。就像"+"号,当和数字在一起时,就代表将两个数相加,当和字符串在一起时,代表将两者相连。

    即同一方法可以根据发送对象的不同而采用多种不同的行为方式。

    一个对象的实际类型是确定的,但可以指向对象的引用类型有很多。

    多态是建立在继承的重写之上的,在子类重写父类的方法后,才会产生多态,所以只有方法有多态,属性是没有多态的。


    父类引用,指向子类的类型(向上转型)

    在初期实例化时,通过 A a = new A;的方式创建对象。这里的a只是指向 "="符号后面的这个A的对象,相当于用new产生了一个对象,给这个对象起一个名字叫a, 或者起任何名字。而反之a也可以用来命名其他的对象,所以,在A类产生一个子类 B类的时候,就可以通过父类直接指向子类 A a = new B; 这样这里原本指向A类对象的a就变为指向子类对象B了。

    这里 A a = new B; "A"是引用类型,"B"是实际类型,在new B 的时候,实际类型是确定了的,就是创建B的对象,但引用类型就不确定了,所以可以用父类a 来指向子类 B。

    显示类型转换(向下转换)

    程序能执行的方法是看左边的父类A是否存在这个方法,如果这个方法被子类B重写,就调用子类B的方法,如果只存在于子类B中,则需要((B)a).方法名; 来强行转换类型。将父类转换为子类。子类为低级,父类为高级。和基本数据类型的转换相同,在低转高的时候,可以直接转换。但高转低,需要强行转换。

    需要注意!!父类可以直接指向子类,但子类不能直接指向父类。


    父类

    package oop.Demo05;

    public class Person {

       public void run(){
           System.out.println("父类");
      }
    }

    子类

    package oop.Demo05;

    public class Student extends Person{

       @Override
       public void run() {//方法重写
           System.out.println("子类");
      }
       public void name(){
           System.out.println("zilei");
      }
    }

    测试类

    package oop;

    import oop.Demo05.Person;
    import oop.Demo05.Student;

    public class Application {
       public static void main(String[] args) {
           Person f = new Student();//父类引用指向子类
           Student s = new Student();
           Object g = new Student();//Object是所有类的父类,所以也是父类指向子类


          ((Student)f).name();//将person强行转换为Student类型。输出结果 zilei
           s.name();//输出结果 zilei
           f.run();//由于子类重写了父类的run方法。所以输出结果 子类
           s.run();//输出结果 子类
      }
    }

     

     

     

  • 相关阅读:
    RadioButton练习(android)
    关于 RArrayFixFlat 与 RArray 与 CArrayPtrFlat 的测试
    How do I add an attachment to the message
    Grid View
    android 布局文件属性说明(转)
    File 存储(android)
    How to Make an HTTP Connection Using TCP/IP with RSocket
    使用RHTTPTransaction后产生CONE 36 Panic的解决办法
    SharedPreferences 存储(android)
    对话框的练习(android)
  • 原文地址:https://www.cnblogs.com/jinweichaoyouqu/p/13997034.html
Copyright © 2011-2022 走看看