zoukankan      html  css  js  c++  java
  • 抽象,接口,转型

    抽象类:
    有只有方法声明但是没有具体实现的方法的类叫做抽象类
    抽象类不去实现行为,行为由子类重写方法来实现
    声明:abstract 类名{}
        
        
    抽象类和接口的区别:
    1.
        
        
    注意事项:
        1.只要有抽象方法的类就一定是抽象类
        2.抽象类不一定全部是抽象方法
        3.抽象类不能创建对象,因为创建对象没有意义,但是可以多态
        4.抽象方法只定义声明而没有写具体实现
        5.如果某个类继承了抽象类但是没有把抽象类中的所有抽象方法重写,那么这个类也会变成抽象类,所以也不能创建对象
        6.抽象方法和抽象类用abstract修饰,并且抽象方法一定在抽象类中
        7.抽象类的构造方法不是用来创建对象的,而是用来给子类使用super来给子类对象中的父类对空间中的成员变量赋值的。
        8.注意:没有构造属性的说法

    接口:
    一切事物都有功能,即一切事物均有接口
        接口不是类,因为创建的时候用的是interface而不是class,但是由于编译后产生的还是.class文件,所以在这点上可以看成是一种只包含了功能声明的特殊类
        接口中定义的方法均是public类型的抽象方法
        接口中无法定义"普通"的成员变量,接口中的所有成员变量都是用final修饰的常量
    接口的实现:
        1.接口不可以创建对象(因为它比抽象类还抽象,而且还没有构造方法),用实现(implements)来表示类与接口的关系,格式为 class 类名 implements 接口名{}
        2.实现接口的类会将接口中的抽象方法"继承"过来(因为接口不是类,而继承是类与类之间进行的,所以打了双引号),然后类去实现接口中的抽象方法。接口定义了功能,而实现接口的类实现了接口的功能

    class 子类 extends 父类 implements 接口

    接口的注意事项:
        1.类单继承类(但是可以多层继承),接口多继承接口(一个接口可以继承多个接口),类多实现接口(一个类可以实现多个接口)
        2.类可以在继承一个类的时候实现多个接口
            class 子类 extends 父类 implements 接口{}
        3.(如果是实现接口的同时继承了别的类)接口与父类的功能可以重复(方法名相同),但是如果重复的话,会调用父类的,如果重写的话,就是重写父类和接口两者的方法

    接口中的成员
        1.接口可以定义变量,但是不能定义普通的变量,必须用修饰符 public static final修饰,方法用public abstract修饰(因为接口中的方法都是用public abstract修饰的,所以可以省略掉不写。这个看标准规定)
        2.接口也不能直接创建对象
        3.如果实现类没有重写全部的接口方法,那么这个实现类也会变成一个抽象类

    父类共性高度集中
    接口>抽象类>父类>子类
    2.7

    多态的作用:
        如果对象引用的是当前类,那么这个类就不能引用他的子类的东西(本来父类就不能使用子类的方法= =),而是只能用他自己或者他的父类的方法
    对象:

    多态:
    什么是多态:就是用父类的引用指向子类的对象(从左往右)
    格式: 父类 引用变量名 = new 子类();
        

    父类引用指向子类的对象,这样对象就只能调用父类的方法而不能调用子类的方法,但是调用的方法产生的结果是子类重写后的方法:多态只能使用父类方法,实现的是子类重写后的方法
    因为使用的是父类创建的引用,只是将子类的对象赋给了父类对象。父类的对象所以只能使用父类的方法,但是因为子类的对象也指向了该对象,所以该对象既可以看做是父类的对象也可以看做是子类的对象,只是这个时候只能使用父类中的方法而已。因为只能使用父类的方法,所以子类的对象中也只能使用父类的方法,所以使用的要么是父类的方法,要么是子类中重写后的父类的方法。
    多态的意义:比如说在方法里传入的参数是父类的引用,在这个方法里,如果使用的是共性的方法,那么就可以使用所有的父类的子类的重写后的方法(或者没有被重写的父类方法),而不是每次都换方法去传递本类的方法,提高了程序的复用性,因为可以使用所有子类重写后的共性方法,所以也提高了当前方法的扩展性(程序的扩展性)

    多态的作用只有一个,就是使用被子类重写的方法,除此之外,所有的东西使用的都是父类的,包括静态方法

    多态的转型:
        1.向上转型:就是多态
        2.向下转型:就是强制转换
        注意:需要转型的是什么类型,强制转换的就是什么类型,比如Dog类就只能转型为Dog类或者其父类,而不能是其他类
        如果转型错误,编译时不会报错但是运行的时候会报错
        只有多态才有向下转型
        
    多态的使用场景:
    1.将父类作为泛型,然后用多态去传入子类的对象。比如使用List集合作为泛型,然后传入ArrayList的对象。

  • 相关阅读:
    【转】XenServer的架构之Xenopsd组件架构与运行机制
    【转】XenServer架构之XAPI的调用流程
    关于JS面向对象、设计模式、以及继承的问题总结
    表格排序的具体案例(包括数字和汉字排序)
    call.apply.冒充对象继承
    ES6的学习之路(基础知识总结)
    ES6的基础知识总结
    JS预解释的总结
    函数执行的作用域问题
    JS中的闭包问题总结
  • 原文地址:https://www.cnblogs.com/Yuanpp/p/8445639.html
Copyright © 2011-2022 走看看