• 第八天学习


                                                                            

                    黑马程序员  第八天笔记 

                <a href="http://www.itheima.com" target="blank">java培训</a>

    1.继承概述

    前提:多各类中,属性和方法一样

          造成重复太多,代码冗余

          将重复的东西取出来,形成看一个类。这个类叫做其他各个类的父类,其他各个类叫做这个类的子类。

      代码演示:

             

              

    演示结果:

           

    2.继承好处:

    提高代码的复用性,代码量减少,提高代码的可维护性

    继承的出现,让类与类之间产生关系,正式有个这个关系,为多态的出现的做了准备

    3.JAVA中继承的特点

    JAVA支持单继承,不支持多继承

    一个类,只能继承一个类,不能同时继承多个类。但是,支持多层继承,或者叫做多重继承

    class A{}

     class B extends A{}

     class C extends B{}

      A类是B的父类,B是C的父类,C是A的孙子类

      C可以直接使用A和B的成员,不包括私有

     B可以直接使用A的成员,不包括私有

    A可以直接使用自己的成员,包括私有

    4.什么时候使用继承

      到底什么时候需要使用继承

      具体情况具体分析:当你分析程序的时候,先要分析程序中确实存在具体事物, 找谁是谁的一种,如果一个事物是另一事物中的一种,可以继承

       如果一个事物的具备了另一个事物的一部分,而另一部分不具备的时候,继承无效,不能继承

    5.继承后,子类父类之间成员变量的特点

         A.如果子类有,使用子类的成员变量,否则使用父类的

         B.父类,子类,子类方法,出现了同名变量

         B.1如果子类方法有变量,就近访问

         B. 2子类方法中,自己访问成员变量,用this

         B.3子类使用父类的成员变量,使用super关键字

    6.super关键字

         This代表本类对象的引用

         Super代表父类存储空间的标识(心里理解为父亲对象引用)

    代码演示:

              

     演示结果:

           

    子类父类内存图

    注意:父类先进内存,子类再进内存,会在子类的空间中做上一个super的标识,标明父类的内存位置

    7.继承以后,子类父类构造方法的特点

      A.在建立子类对象的时候,无论如何必须运行父类构造方法

    A.1在子类构造方法的第一行,有一个隐士代码: super()作用调用父类空参数构造方法

    A.2如果子类不写构造方法,编译的时候加上构造方法

             编译时期加入构造方法 

                  权限  构造方法名(){

                     super(); }

    A.3 JAVA中所有类的所有构造方法第一行默认是super()

       构造方法,重载也算 

     B.如果父类中没有空参数构造方法,父类中自己手写了构造方法

    B.1 子类的所有构造方法,必须手写super,否则便编译失败

    B.2如果父类中有多个构造方法,子类可以任意选择一个构造方法调用

      C. 子类构造方法中,this和super语句的特性

      C.1 子类构造方法中,this还是super选择一个

     C.2 子类构造方法写了this语句,默认的super语句就没有了

     C.3 子类构造方法,写this语句,会通过别的构造方法,间接访问到父类构造方法

     总结特点:

          记住所有类构造方法第一行都是super()!!!

           程序中,必须保证子类中所有的构造方法无论直接还是间接,都必须访问过父类的构造方法。

          子类父类构造方法的题目:看子类中所有构造方法是不是都访问过父类构造方法,

           如果没有,直接编译失败

    代码演示:

            

    演示结果:

          

    8. 子类父类中成员方法特点(非常重要,后期,经常出现了)

        继承中,子类出现了和父类一模一样的方法,这样的现象,称为 子类重写父类的方法,前提是权限必须大于或者等于父类方法权限 (override) 现象还叫做,子类覆盖父类方

        法,重写,复写 。

       正在尝试分配更低的访问权限; 以前为public : 子类方法权限小于了父类方法权限

       返回类型int与void不兼容 : 重写的时候,子类方法返回值和父类方法返回值不同

     静态方法:

        静态覆盖静态,非静态覆盖非静态

        静态方法,属于自己的类,不属于对象,因此静态没有覆盖的说法

    9.重写方法

      extends 继承,实际英文 扩展,延伸

      class Zi extends Fu{} 

      子类扩展的了父类的功能

    代码演示:

         

    演示结果:

        

    10. 学生和老师继承练习

      学生姓名,年龄

      老师姓名,年龄

      学生功能,学习功能

      老师功能,上课功能

       要求:共性抽取父类,父类成员私有,提高get set

      在学生和老师的功能中,打印出自己的姓名和年龄

    代码结果:

               

           

    结果演示:

       

      

    11.Final关键字

       final是最终的意思,修饰符,修饰类,方法,成员变量,局部变量

      final修饰类--最终类,不能有子类,不能被继承

      final修饰方法-- 最终方法,这个方法不能被子类重写

      子类继承后,可以调用,但是不能重写

      final修饰的成员变量--最终变量,只能赋值一次,终身不变,就是常量

      final修饰成员变量,固定的数值,不是内存默认值

      final修饰成员变量,可以在构造方法中赋值,但是不能在普通的方法中赋值

      原因:构造方法是建立对象的过程,普通方法是对象已经建立完成了, 日后在类中,如果定义静态的常量的使用

        标准格式  public static final int A = 10;

                     public static final double PI = 3.14159265358979323846;

    代码演示:

          

    演示结果:

         

  • 相关阅读:
    Linux 编译kernel有关Kconfig文件详解
    STM32之DMA实例
    容器技术与docker
    老男孩Python全栈学习 S9 日常作业 010
    Centos 7 最小化Fastdfs安装部署
    老男孩Python全栈学习 S9 日常作业 009
    老男孩Python全栈学习 S9 日常作业 008
    service
    Spinner的用法
    控制led灯并显示自己的数值
  • 原文地址:https://www.cnblogs.com/liman/p/4361338.html
Copyright © 2020-2023  润新知