zoukankan      html  css  js  c++  java
  • 第八天学习

                                                                            

                    黑马程序员  第八天笔记 

                <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;

    代码演示:

          

    演示结果:

         

  • 相关阅读:
    go函数
    Linux 查看磁盘容量、查找大文件、查找大目录
    五分钟理解一致性哈希算法(consistent hashing)
    使用Java实现三个线程交替打印0-74
    Python实现IOC控制反转
    Wannafly挑战赛5 A珂朵莉与宇宙 前缀和+枚举平方数
    Yandex Big Data Essentials Week1 Scaling Distributed File System
    Yandex Big Data Essentials Week1 Unix Command Line Interface Processes managing
    Yandex Big Data Essentials Week1 Unix Command Line Interface File Content exploration
    Yandex Big Data Essentials Week1 Unix Command Line Interface File System exploration
  • 原文地址:https://www.cnblogs.com/liman/p/4361338.html
Copyright © 2011-2022 走看看