zoukankan      html  css  js  c++  java
  • 多态性

    Java中多态性主要表现在两个方面:方法的重载和覆写对象的多态性

    对象的多态性主要表现在以下两种类型:

    • 向上转型:子类对象->父类对象   父类 父类对象 = 子类实例;
    • 向下转型:父类对象->子类对象   子类 子类对象 = (子类)父类对象;

    1、向上转型:用子类对象转型到父类对象调用的还是子类覆写过得方法,但注意这样的父类对象不能调用父类中没有的方法。此处的父类对象可以使接口。

     

     1 class A{
     2     void print1() {            //定义print1
     3         System.out.println("父类print1");}
     4 }
     5 class B extends A{
     6     void print1() {           //覆写父类的print1
     7         System.out.println("子类print1");}
     8     void print2() {
     9         System.out.println("子类print2");}
    10 }
    11 public class Test{
    12     public static void main(String args[]) {
    13         A a = new B();
    14         a.print1();           //此处调用覆写过得print1
    15     }
    16 }

     

    2向下转型过程中,分为两种情况:

    情况一:如果父类引用的对象如果引用的是指向的子类对象,那么在向下转型的过程中是安全的。也就是编译是不会出错误的。

    情况二:如果父类引用的对象是父类本身,那么在向下转型的过程中是不安全的,编译不会出错,但是运行时会出现java.lang.ClassCastException错误。它可以使用instanceof来避免出错此类错误。

     

     1 class A{
     2     void print1() {            //定义print1
     3         System.out.println("父类print1");
     4 
     5     }
     6 }
     7 class B extends A{
     8     void print1() {           //覆写父类的print1
     9         System.out.println("子类print1");
    10     }
    11     void print2() {
    12         System.out.println("子类print2");
    13     }
    14 }
    15 public class Test{
    16     public static void main(String args[]) {
    17         A a = new B();        //转型成功
    18         B b = (B)a;
    19 //        A a = new A();        //转型失败
    20 //        B b = (B)a; 
    21         b.print1();
    22     }
    23 }

     

     

     

  • 相关阅读:
    JAVA抽象方法,接口
    JAVA基础,字符串
    JAVA运算符
    JAVA数组
    团队任务1:第一次团队会议
    课后作业二:个人项目
    自我介绍
    python3加密 解密 签名 验签
    python3读取xml字符串
    SETX命令设置环境变量
  • 原文地址:https://www.cnblogs.com/mzct123/p/8283526.html
Copyright © 2011-2022 走看看