• 面向对象--多态


    1    多态概述

    多态是继封装、继承之后,面向对象的第三大特性。

    最终多态体现为父类引用变量可以指向子类对象。

    多态的定义格式:就是父类的引用变量指向子类对象

    父类类型  变量名 = new 子类类型();

    变量名.方法名();

    2   多态-成员的特点

    public class Person {
        int a=0;
        public void speak(){
            System.out.println("这是父类的方法");
        }
    }
    
    public class Student extends Person{
        int a=1;
        public void speak(){
            System.out.println("这是子类的方法");
        }
    }
    
    public class Test {
        public static void main(String[] args) {
            //多态
            //父类引用指向子类对象成员变量特点:编译运行看左边
            //编译看父类,如果父类有,则访问父类的成员变量
            //如果父类没有,则编译失败
            Person p=new Student();
            System.out.println(p.a);
            //成员方法:编译看左边,运行看右边
            //编译看父类,如果父类有,则编译成功,运行时子类重写后的方法,如果父类没有,则编译失败
            p.speak();
            //判断p是否属于人类
            System.out.println(p instanceof Person);
            System.out.println(p instanceof Student);
        }
    }

    3  instanceof关键字和多态-转型

    子类类型 变量名 = (子类类型) 父类类型的变量;

    如:Student stu = (Student) p;  //变量p 实际上指向Student对象

    l  什么时候使用向下转型

    当要使用子类特有功能时,就需要使用向下转型。

    l  什么时候使用向上转型:

    当不需要面对子类类型时,通过提高扩展性,或者使用父类的功能就能完成相应的操作,这时就可以使用向上转型。

    总结:

    总结下封装、继承、多态的作用:

    l  封装:把对象的属性与方法的实现细节隐藏,仅对外提供一些公共的访问方式

    l  继承:子类会自动拥有父类所有可继承的属性和方法。

    l  多态:配合继承与方法重写提高了代码的复用性与扩展性;如果没有方法重写,则多态同样没有意义。

  • 相关阅读:
    asp.net自带的异步刷新控件使用
    C#反射之创建对象实例
    用httpHandler实现简易ajax框架
    在配置文件中使用相对路径连接数据库文件
    C# 扩展方法
    JavaScript动态创建元素(老帖新发)
    为所有类型扩展一个深拷贝方法
    C#反射之获取程序集信息
    枚举类型的位运算
    SQL2005数据库还原到SQL2000的方法
  • 原文地址:https://www.cnblogs.com/quanjunkang/p/10616520.html
Copyright © 2020-2023  润新知