JAVA笔记第二篇

继承

继承的好处和弊端

  1. 好处:提高了代码的(复用性,维护性),是多态的前提

  2. 弊端:降低了代码的灵活性,增强了代码的耦合性

继承的特点

Java只支持单继承,不支持多继承,但支持多层继承

继承的成员变量访问特点

*在子类方法中访问一个变量*

  1. 子类局部范围找

  2. 子类成员范围找

  3. 父类成员范围找

注意:如果子父类中,出现了重名的成员变量,通过就近原则,会优先使用子类的变量,如果一定要使用父类的,可以通过关键字进行区分

 

继承中成员方法的访问特点

通过子类对象访问一个方法

  1. 子类成员范围找

  2. 父类成员范围找

方法重写

概念:在继承体系中,子类出现了和父类中一模一样的方法申明;

方法重写的应用场景:当子类需要父类的功能,而功能主题子类有自己特有的内容,可以重写父类中的方法,这样既沿袭了父类的功能,又定义了子类特有的内容;

注意事项:1. 父类中私有方法不能被重写;2. 父类静态方法,子类必须通过静态方法进行重写,父类非静态方法,子类也必须通过非静态方法进行重写

抽象类

抽象类概述

抽象方法:将共性的行为(方法)抽取到父类之后,发现该方法的实现逻辑无法在父类中给出具体明确,该方法就可以定义为抽象方法(无方法体)

抽象类:如果一个类中存在抽象方法,那么该类就必须为抽象类

抽象类注意事项

  1. 抽象类不能实例化

  2. 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类

  3. 可以有构造方法

  4. 抽象类的子类

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

    2. 要么是抽象类(不推荐)

final关键字

final关键字是最终的意思,可以修饰(方法,变量,类)

final修饰的特点:

  1. 修饰方法:表明该方法是最终方法,不能被重写

  2. 修饰变量:表明该变量是常量,不能再次被赋值

    1. 在创建的时候,直接给值

    2. 在构造方法结束之前,完成赋值

  3. 修饰类:表明该类是最终类,不能被继承

    1. 基本数据类型变量:其值不能被改变

代码块

代码块概述与分类

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

分类:

  1. 局部代码块

    1. 位置:方法中定义;

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

  2. 构造代码块

    1. 位置:类中方法外定义

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

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

  3. 静态代码块

    1. 位置:类中方法外定义

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

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

接口

接口介绍

当一个类中的所有方法都是抽象方法的时候,我们就可以将其定义为接口,接口也是一种引用数据类型,它比抽象类还要抽象

接口的定义和特点

  1. 接口用的关键字interface来定义

    public interface 接口名{}

  2. 接口不能实例化

  3. 接口和类之间是实现关系,通过implements关键字表示

    public class 类名 implements 接口名{}

  4. 接口的子类(实现类)

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

    要么是抽象类(该选择不推荐)

注意:接口和类的实现关系,可以单实现,也可以多实现。

public class 类名 implements 接口名1,接口名2{}

接口中成员的特点

  1. 成员变量

    只能是常量

    默认修饰符:public static final

  2. 构造方法

    没有

  3. 成员方法

    只能是抽象方法

    默认修饰符:public abstract

JDK8版本接口成员的特点

  1. JDK8版本后

    1. 允许在接空中定义抽象方法,但是需要使用关键字default修饰,这些方法就是默认方法

    2. 作用:解决接口升级的问题

  2. 接口中默认方法的定义格式

    1. 格式:public default 返回值类型方法名(参数列表){}

    2. 范例:public default void show(){}

  3. 接口中默认方法的注意事项

    1. 默认方法不是抽象方法,所以不强制被重写,但是可以被重写,重写的时候去掉default关键字

    2. public可以省略,default不能省略

    3. 如果实现了多个接口,多个接口中存在相同的方法声明,子类就必须对该方法进行重写

接口的使用思路

  1. 如果发现一个类中所有的方法都是抽象方法,那么就可以将该类改进为一个接口;

  2. 涉及到了接口大面积更新方法,而不想去修改每一个实现类,就可以将更新的方法定义为带有方法体的默认方法;

  3. 希望默认方法调用的更加简洁,可以考虑设计为static静态方法。(需要去掉default关键字

  4. 默认方法中出现了重复的代码,可以考虑抽取出一个私有方法;(需要去掉default关键字

类和接口的关系

  1. 类和类的关系

    继承关系,只能单继承,但是可以多层继承

  2. 类和接口的关系

    实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口

  3. 接口和接口的关系

    继承关系,可以单继承,也可以多继承

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值