java继承

本文详细介绍了Java中的继承概念、使用场景、语法特点、优缺点,以及super和this关键字的用法。同时,讨论了方法重写、构造方法的访问顺序、抽象类和final关键字的应用,并对代码块进行了分类解析。此外,还涵盖了类的访问权限修饰符和抽象方法在模板设计中的作用。
摘要由CSDN通过智能技术生成

目录

1 概述

2 使用继承的场景

3 继承的书写格式

4 优缺点

5 继承方式特点

6 继承中的访问特点

7 super 和 this 关键字

7.1 super关键字

7.2 this关键字

8 方法重写

8.1 概念

8.2 特点

8.3 应用场景

8.4 方法重写 与方法重载的区别

8.5 方法重写的注意事项

8.6 权限修饰符

9 构造方法的访问顺序

10 抽象(abstract )

10.1 概述 

10.2 抽象类

10.3 抽象方法

10.4 抽象的用处

11 final关键词

11.1 概念

12 代码块

12.1 概念

12.2 分类

12.2.1 局部代码块

12.2.2 构造代码块

12.2.3 静态代码块


1 概述

继承其实是把一些具有 具有共性的 类的部分 抽到一个父类中

让类和类之间产生关系(子父类关系), 让子类继承父类中的非私有成员部分

注:

  • 父类也称之为基 , 超类

  • 子类也称为 派生类

2 使用继承的场景

当两个或两个以上的类有大量的重复的属性和方法的时候,可以考虑抽取出来一个父类。

注:

        抽取出来的父类和子类是包含关系, 不是平级关系。例如 父类 水果和 子类苹果的关系,而不是苹果和香蕉的关系。

3 继承的书写格式

public class 子类名 extends 父类名(){}

4 优缺点

  • 优点:
    • 提高了代码的复用性, 也就是使用更方便了。
    • 提高了代码的维护性, 也就是修改的时候,改父类,子类也跟着改变了,不用子类一个一个修改。
  • 缺点:
    • 增强了子类和父类的耦合性, 减少了子类的灵活性。

5 继承方式特点

单继承:一个子类只能继承一个父类。

多层继承:一个子类的父类也可以继承别的类,依次类推。

6 继承中的访问特点

先局部,后成员

先子类,后父类

最后都找不到就报错

7 super 和 this 关键字

super 和 this 关键字使用位置是子类。

7.1 super关键字

super是表达父类的意思,用以子类中调用父类的方法。

书写格式是:

父类构造方法的调用:super(),如果是调用有参构造,在()内直接传入参数即可。

父类变量的调用:super.变量名 。

父类方法的调用:super.方法名 。

7.2 this关键字

this是子类成员的意思, 用以调用自己的本类的方法或者成员变量。

 this成员方法的调用就少的多了,一般是用在无参构造方法的地方, 调用本类方法随着初始化而初始化。

书写格式同父类

注意:

  • 子类加载的时候 就会对 父类进行加载,在子类开辟的空间里开辟一个父类空间,对父类的变量进行初始化。
  • 子类父类初始化都是通过 构造方法初始化,所以有参构造, 无参构造至少需要一个。
  • 类的初始化时,有static 修饰的方法 和变量 还有 new 对象名生成的对象 都会进行初始化。

8 方法重写

8.1 概念

当父类不方法不能满足子类的需求时子类会对父类的方法进行重写。

8.2 特点

方法重写时,方法声明,返回值一模一样。

备注:

public void 方法名()是方法声明,{} 内的是方法体。

父类的static 方法, private 修饰的方法不能被重写。

8.3 应用场景

  • 如果子类对父类的方法不满足时, 可以对父类的 方法进行重写。

  • 在重写的时候, 可以用super() 把父类的方法继承过来, 然后在继续添加功能。

8.4 方法重写 与方法重载的区别

方法重载overload: 在同一个类中, 方法名相同, 形参不同。

方法重写override: 在子父类中, 子类的方法声明和 形参一模一样的时候。

8.5 方法重写的注意事项

  • 声明要完全一致;

  • 利用@overriade 可以检查重写正确性;

  • 父类私有的方法无法进行方法重写, 构造方法也不可以重写;

  • static修饰的静态方法 无法进行重写;

  • 方法重写时,子类的 访问权限必须大于等于父类的;

  • 继承关系中, 父类及父类以上类中的方法都能重写;

8.6 权限修饰符

修饰符本类同包外包子类外包非子类
private*
默认**
protected***
public****

注: * 表示有这个权限

9 构造方法的访问顺序

子类初始化的时候会默认访问父类的无参构造器。

父类不写构造方法,则系统自动提供无参构造方法。

父类提供有参构造方法, 不提供无参构造方法,则虚拟机不会自动提供无参构造方法,默认访问无参构造方法的时候就会报错。

10 抽象(abstract )

10.1 概述 

抽象是两个类的 方法声明一样, 方法体不一样,我们把他们抽取到父类中,然后用 abstract 方法名,此时这个父类就变成抽象类了,父类名要用abstract 修饰。

10.2 抽象类

  • 抽象类不能有实例化,通俗的讲就是不能通过new 类名创建抽象类的对象。
  • 抽象类的子类必须重写所有抽象方法。

10.3 抽象方法

  • 抽象方法没有方法体。例如 public void method();
  • 抽象方法的类一定是抽象类。此时的类名记得用abstract修饰。

10.4 抽象的用处

抽象可以做模板设计

例如面的代码,子类继承的时候就必须重写body 的部分,其他部分不用动,达到模板的效果。

  public void inform() {
        System.out.println("通知");
        body();
        System.out.println("xx年xx月x日");
        System.out.println("xxx经理");
    }

    public abstract void body();

接口也用的抽象方法

其实接口就是一种规则,一种协议,规范调用者的代码的。

11 final关键词

11.1 概念

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

  • final修饰的 类不能继承, 不能被子类重写

  • final修饰的方法不能修改

  • final修饰的变量称为常量, 叫做自定义常量, 不能再次赋值

    • final修饰的基本类型的变量, 属性值不能再次被赋值

    • final修饰的引用类型的变量, 地址值不能改变, 地址内的数值可以改变

final在 类中 修饰的变量 需要直接赋值, 或者 在无参构造结束前 把值赋上 建议直接赋值

12 代码块

12.1 概念

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

12.2 分类

12.2.1 局部代码块

位置: 方法中

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

12.2.2 构造代码块

位置: 类中方法外

特点: 每次构造方法执行之前就会执行该代码块

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

缺点: 每次加载构造代码块之前都要加载这个构造代码块, 缺乏灵活性.

12.2.3 静态代码块

位置: 类中方法外

特点: 需要用static 修饰, 在加载类的时候就会执行,并且执行一次

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

应用场景: 加载驱动, 加载配置文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值