zoukankan      html  css  js  c++  java
  • 继承

    1. 继承

    1.1 继承的实现

    • 实现继承的格式

      • 继承通过extends实现

      • 格式:class 子类 extends 父类 { }

        • 举例:class Dog extends Animal { }

    • 继承带来的好处

      • 继承可以让类与类之间产生关系,子父类关系,产生子父类后,子类则可以使用父类中非私有的成员。

    1.2. Java中继承的特点

    • Java中继承的特点

      1. Java中类只支持单继承,不支持多继承

        • 错误范例:class A extends B, C { }

      2. Java中类支持多层继承

    2.1 继承中变量的访问特点

    在子类方法中访问一个变量,采用的是就近原则。

    1. 子类局部范围找

    2. 子类成员范围找

    3. 父类成员范围找

    2.2 super

    • this&super关键字:

      • this:代表本类对象的引用

      • super:代表父类存储空间的标识(可以理解为父类对象引用)

    • this和super的使用分别

      • 成员变量:

        • this.成员变量 - 访问本类成员变量

        • super.成员变量 - 访问父类成员变量

      • 成员方法:

        • this.成员方法 - 访问本类成员方法

        • super.成员方法 - 访问父类成员方法

    • 构造方法:

      • this(…) - 访问本类构造方法

      • super(…) - 访问父类构造方法

    2.3 super内存图

    • 对象在堆内存中,会单独存在一块super区域,用来存放父类的数据

      01_super内存图

    2.4 方法重写

    • 1、方法重写概念

      • 子类出现了和父类中一模一样的方法声明(方法名一样,参数列表也必须一样)

    • 2、方法重写的应用场景

      • 当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的内容

    • 3、Override注解

      • 用来检测当前的方法,是否是重写的方法,起到【校验】的作用

    2.5 方法重写的注意事项

    • 方法重写的注意事项

    1. 私有方法不能被重写(父类私有成员子类是不能继承的)

    2. 子类方法访问权限不能更低(public > 默认 > 私有)

    3. 静态方法不能被重写,如果子类也有相同的方法,并不是重写的父类的方法

    3.1抽象类的概述

    当我们在做子类共性功能抽取时,有些方法在父类中并没有具体的体现,这个时候就需要抽象类了!

    在Java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类!

    3.2抽象类的特点

    • 抽象类和抽象方法必须使用 abstract 关键字修饰

      //抽象类的定义
      public abstract class 类名 {}

      //抽象方法的定义
      public abstract void eat();
    • 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类

    • 抽象类不能实例化

    • 抽象类可以有构造方法

    • 抽象类的子类

      要么重写抽象类中的所有抽象方法

      要么是抽象类

    3.3final

    • fianl关键字的作用

      • final代表最终的意思,可以修饰成员方法,成员变量,类

    • final修饰类、方法、变量的效果

      • fianl修饰类:该类不能被继承(不能有子类,但是可以有父类)

      • final修饰方法:该方法不能被重写

      • final修饰变量:表明该变量是一个常量,不能再次赋值

        • 变量是基本类型,不能改变的是值

        • 变量是引用类型,不能改变的是地址值,但地址里面的内容是可以改变的

    4.2代码块分类

    局部代码块

    • 位置: 方法中定义

    • 作用: 限定变量的生命周期,及早释放,提高内存利用率

    构造代码块

    • 位置: 类中方法外定义

    • 特点: 每次构造方法执行的时,都会执行该代码块中的代码,并且在构造方法执行前执行

    • 作用: 将多个构造方法中相同的代码,抽取到构造代码块中,提高代码的复用性

    静态代码块

    • 位置: 类中方法外定义

    • 特点: 需要通过static关键字修饰,随着类的加载而加载,并且只执行一次

    • 作用: 在类加载的时候做一些数据初始化的操作

  • 相关阅读:
    不在折腾---hbase-0.96.2-hadoop2
    不在折腾---hive-0.13.1-bin
    不在折腾---storm-0.9.2-incubating分布式安装
    zookeeper的zoo.cfg的配置
    Linux常用命令
    不在折腾----zookeeper-3.4.5
    VMware克隆后,网卡若干问题
    防火墙基础技术-02
    JavaScript email格式校验
    js透明按钮图片滑动切换焦点图
  • 原文地址:https://www.cnblogs.com/sunhao410526/p/14162250.html
Copyright © 2011-2022 走看看