zoukankan      html  css  js  c++  java
  • Java系列学习(八)-继承

    1.代码块

    (1)在java中,使用 { } 括起来的代码 被称为代码块

    (2)分类:

    A:局部代码块

    【局部位置】

    【作用:用于限定 变量的生命周期】

    image

    B:构造代码块

    【在类中的成员位置,用{}括起来的代码。每次调用构造方法执行前,都会先执行构造代码块。】

    【作用:可以把多个构造方法的共同 代码放到一起,对对象进行初始化】

    image

    C:静态代码块

    【在类的成员位置,用{}括起来的代码,只不过它用static修饰了】

    【作用:一般是对类进行初始化】

    image

    (3)结论:

    A:执行顺序 :

    【静态代码块 > 构造代码块 > 构造方法】

    B:静态代码块:只执行一次

    C:构造代码块:每次调用构造方法都会执行

    2.继承

    (1)把多个类中相同的成员给提取出来 定义到一个独立的类中,然后让多个类和该独立类产生一个关系。

         这种关系,就叫做继承。

    (2)Java中表示继承

    A:用关键字  extends 表示

    B:格式

    image

    (3)继承的好处:

    A:提高了代码的复用性

    B:提高了代码的维护性

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

    (4)继承的弊端:

    A:让 类的耦合性增强。这个类的改变,会影响其他和该类相关的类

    【原则:低耦合,高内聚 】

    【耦合:类与类的关系】

    【内聚:自己完成某件事情的能力】

    B:打破了封闭性

    (5)Java中继承的特点:

    A:Java中类只支持单继承

    B:Java中可以多层继承

    (6)继承的注意事项

    A:子类不能继承父类的私有成员

    B:子类不能继承父类的构造方法,但可以通过 super 去访问

    C:不要为了部分功能而去继承

    (7)什么时候使用继承

    A:继承体现 的是:is  a  的关系(苹果 is a 水果

    B:采用假设法

    (8)Java继承中的成员关系

    A:成员变量

    【子类的成员变量名称 和 父类的成员变量名称 不一样】

    【子类的成员变量名称 和 父类的成员变量名称 一样】

    image

    【子类中 调用父类中 指定成员变量 】

    image

    B:构造方法

    【子类的构造方法默认会去访问父类的无参构造方法】

    image

    【子类中如果没有无参构造方法】

    方法一:在父类中加一个带参数的构造方法

    方法二:通过super关键字去显示的调用父类的带参数构造方法 

    image

    方式三:子类通过this去调用本类的其他构造方法

    【子类中一定要有一个去访问父类的构造方法,否则父类数据就没有初始化】

    【注】this(…) 和 super(…) 必须放在第一条语句,否则会对父类进行多次初始化

    image

    C:成员方法

    【子类的成员方法名称 和 父类的成员方法名称 不一样】

    【子类的成员方法名称 和 父类的成员方法名称 一样】

    image

    (9)this与super

    A:区别

    【this代表本类对应的引用】

    【super代表父类存储空间的标识(可以理解为父类引用,可以操作父类的成员)】

    B:使用

    【调用成员变量】

    this.成员变量--调用本类的成员变量

    super.成员变量--调用父类的成员变量

    【调用构造方法】

    this(…)--调用本类的构造方法

    super(…)--调用父类的构造方法

    【调用成员方法】

    this.成员方法--调用本类的成员方法

    super.成员方法--调用父类的成员方法

    3.方法的重写(Override)

    (1)定义:

    子类中出现了和父类中方法声明一模一样的方法

    (2)应用:

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

    (3)使用方式:

    image

    (4)注意事项

    A:父类中私有方法不能被重写

    【因为父类 私有方法,子类根本就无法继承】

    B:子类重写父类方法时,访问权限不能更低

    【子类权限 最好 和父类一致】

    image

    C:父类静态方法,子类也必须通过静态方法进行重写

    【这个算不上重写,但是现象确实如此】

    image

    更多精彩内容请看:http://www.cnblogs.com/2star
  • 相关阅读:
    C# WinForm开发系列 Socket/WCF/Rometing/Web Services
    .net(c#) 简单的软件注册功能的实现:
    来自xici网友的Ubuntu和windows xp的Super PI性能测试
    最新的Linpack测试指南-基于woodcrest机器
    CFX x86_64 version issues 无法找到可执行文件
    如何检查一个mvapich的版本?
    Intel Tools Training Notes Intel Compiler, MKLs
    Infiniband IPoIB Debug FAQ
    让CFX的license server在开机的时候就自动启动
    FFTW 3.1.2 和 2.1.5编译
  • 原文地址:https://www.cnblogs.com/kimisme/p/4472002.html
Copyright © 2011-2022 走看看