黑马程序员_继承体系和接口体系

来源:互联网 发布:成龙国际影响力知乎 编辑:程序博客网 时间:2024/06/05 15:40

继承
    @就是把多个类中的共性给提取出来定义到一个独立的类中。然后让这多个类和该独立的类产生一个关系,
       这多个类就具备了这些内容。这个关系叫继承。
    (2)Java中如何表示继承呢?格式是什么呢?
        A:用关键字extends表示
        B:格式:

            class 子类名 extends 父类名 {}

@例如:class Student extends Person{}

                class Teacher extends Person{}

Person类中有Student类和Teacher类所共有的东西

  

 (3)继承的好处:

        A:提高了代码的复用性

@我定义一个父类,只要以后有用到父类的东西,直接继承父类就好了

        B:提高了代码的维护性

@修改父类的某个属性,子类就会一起更改

        C:让类与类产生了一个关系,是多态的前提

  

 (4)继承的弊端:

            原则:低耦合,高内聚。
            耦合:类与类的关系
            内聚:自己完成某件事情的能力
        B:打破了封装性
    (5)Java中继承的特点
        A:Java中类只支持单继承

        B:Java中可以多层(重)继承(继承体系)

@例如:Son extends Father{}

               Father extends Person{}

  

 (6)继承的注意事项:

        A:子类不能继承父类的私有成员
        B:子类不能继承父类的构造方法,但是可以通过super去访问
        C:不要为了部分功能而去继承

 

        B:构造方法
            a:子类的构造方法默认会去访问父类的无参构造方法
                是为了子类访问父类数据的初始化
            b:父类中如果没有无参构造方法
                1.子类通过super去明确调用带参构造
                2.子类通过this调用本身的其他构造,但是一定会有一个去访问了父类的构造

                3.让父类提供无参构造

@override就是在继承父类的时候,把从父类那里继承来的成员方法重写,具体表现就是成员方法内的方法体不同了

                  例如:class Father{

                  public static void main(String[] args){

                   System.out.println("我是父亲");

                      }

                  }

                             class Son extends Father{

                               public static void main(String[] args){

                                        System.out.println("我是儿子");

                                 }

                      }

                   }

1:final关键字

    (1)是最终的意思,可以修饰类,方法,变量。
    (2)特点:
        A:它修饰的类,不能被继承。
        B:它修饰的方法,不能被重写。
        C:它修饰的变量,是一个常量。

@特别注意:修饰引用类型 时,地址值不能发生改变,但是对象的内容是可以改变的
 
2:多态

    (1)同一个对象在不同时刻体现出来的不同状态。

@例如:Person pe=new Student();

                Person pe2=new Teacher();

    (2)多态的前提:
        A:有继承或者实现关系。
        B:有方法重写,没有就没意义了。
        C:有父类或者父接口引用指向子类对象person s=new student();。
        

    (3)多态中的成员访问特点
     @   因为只有成员方法有重写,所以只有成员方法运行的时候看new的对象(右边)
            
   
    (4)多态的好处:
        A:提高代码的维护性(继承体现)
        B:提高代码的扩展性(多态体现)

        现象:
            子可以当作父使用,父不能当作子使用。

3:抽象类(abstract)
      没有具体的方法体的方法是抽象的方法,定义的抽象方法就是给它的子类去重写的。
       在一个类中如果有抽象方法,该类必须定义为抽象类。
    (1)抽象类的特点
        A:抽象类和抽象方法必须用关键字abstract修饰
        B:抽象类中不一定有抽象方法,但是有抽象方法的类一定是抽象类
        C:抽象类不能实例化
        D:抽象类的子类
            a:是一个抽象类。
            b:是一个具体类。这个类必须重写抽象类中的所有抽象方法。
  
 
    (2)抽象类的几个小问题
        A:抽象类有构造方法,不能实例化,那么构造方法有什么用?
            用于子类访问父类数据的初始化
        B:一个类如果没有抽象方法,却定义为了抽象类,有什么用?
            为了不让创建对象
        C:abstract不能和哪些关键字共存
            a:final    冲突
            b:private 冲突
            c:static 无意义

4:接口
    (1)接口的特点:
        A:接口用关键字interface修饰
            interface 接口名 {}
        B:类实现接口用implements修饰
            class 类名 implements 接口名 {}
        C:接口不能实例化
        D:接口的实现类
            a:是一个抽象类。
            b:是一个具体类,这个类必须重写接口中的所有抽象方法。
    (2)接口的成员特点:
        A:成员变量
            只能是常量
            默认修饰符:public static final
     
            没有构造方法,成员方法 只能是抽象的
            默认修饰符:public abstract

      @  类与接口的 实现关系,可以单实现,也可以多实现。
            还可以在继承一个类的同时,实现多个接口

      @  接口与接口的 继承关系,可以单继承,也可以多继承

@接口实现相对于继承来说的区别就在于,实现接口相当于获得额外的功能,而继承就相当于获得本该有的功能



0 0