zoukankan      html  css  js  c++  java
  • 从向上向下转型到----抽象类接口(一)

    对象的多态性-向上向下转型
      向上转型:子类对象变为父类对象,格式:父类 父类对象 = 子类实例,自动转换;

      向下转型:父类对象变为子类对象,格式:子类 子类对象 = (子类) 父类实例,强制转换;

      注意:对象的多态性和方法复写是联系在一起的

      向上转型:

    class A{
    public void print(){
    System.out.println("a")
    }
    }
    
    class B extends A{
    public void print(){
    System.out.println("b")
    }
    }
    
    public class Demo{
    public static void main(String args[]){
    B b =new B();
    b.print();
    }
    }

    注意:本程序实例化的是子类对象,并且print()方法又被复写了,最终调用的一定是被复写过的方法

    向下转型

    public static void main(String args[]){
    A a = new B();
    B b = (B) a;
    b.print();
    }

    注意:必须发生向上转型之后,才能发生向下转型,而向下转型有风险,尽量少使用.

    好处:在实际开发中,对象向上转型的主要意义在于参数的统一,也是最为主要的用法,而对象的向下转型指的是调用子类的个性化操作.
    举个例子,假如有多个类继承自一个类,并且复写其中的一个方法,那么我们可以:

    public class Demo{
    public static void main(String args[]){
    fun(new B());
    fun(new c());
    }
    
    public static void fun(A a){ //这里只用到了A a 一个参数
    a.print();
    }
    }

    而向下转型.如果子类有没有复写父类的方法,而且要调用,那么就要用到了.

    抽象类
    抽象类:抽象类就是指在普通方法里增加了抽象方法,而且抽象方法没有方法体,用abstract修饰.同时有抽象方法的类,也必须要被abstract修饰
    而抽象类与向上向下转型的关系是,抽象类无法实例化,要调用,必须使用向上向下转型.
    同时抽象类必须被继承,而且子类必须重写父类的所有抽象方法.

    抽象类的限制
    抽象类不能用final修饰

    抽象类的应用---模板设计模式
    普通方法定义在抽象类时,可以直接调用类中的方法,但是具体的抽象方法内容就必须由子类提供

    abstract class A{
    public void fun(){ //普通方法调用子类方法
    this.print();
    }
    public abstract void print(); //抽象方法
    }
    class X extends A{
    public void print(){
    System.out.println("重写父类的抽象方法")
    }
    }
    public class Demo{
    public static void main(String args[]){
    A a =new X();
    a.fun();
    }
    }


    理解:如果将父类的方法print比喻为叫这一行为的话,子类的重写则是表明具体是什么在叫.

  • 相关阅读:
    hdu 4273 2012长春赛区网络赛 三维凸包中心到最近面距离 ***
    hdu 4272 2012长春赛区网络赛 dfs暴力 ***
    hdu 4063 福州赛区网络赛 圆 ****
    hdu 4069 福州赛区网络赛I DLC ***
    hdu 4061 福州赛区网络赛A 数学 ***
    hdu 4068 福州赛区网络赛H 排列 ***
    hdu 4070 福州赛区网络赛J 贪心 ***
    hdu 5366 组合数 *
    linux的rsync工具的常用选项及ssh同步介绍
    从U盘安装CentOS7.3教程
  • 原文地址:https://www.cnblogs.com/haizhongdenta/p/8727219.html
Copyright © 2011-2022 走看看