接口和抽象类_java_大全(学习笔记ing)

文章详细介绍了Java中的final关键字,包括其在修饰变量、方法和类时的作用,以及常量的命名规范。接着讨论了抽象类的概念、特性,强调了抽象方法和防止父类实例化的功能。随后介绍了接口的定义、实现、特性和作用,包括多继承和接口与抽象类的区别。最后,文章通过示例展示了如何实现接口和接口在多态中的应用。
摘要由CSDN通过智能技术生成

一、final关键字

​    final表示最终的,用来修饰变量、方法、类等

1. 修饰变量

​    被final修饰的变量,称为常量 constant,常量的值不能被修改

​    被static final修饰的变量,称为静态常量,一般也称为常量(使用较多)

​    常量的命名规范:所有字母都大写,多个单词之间以下划线连接

​    应用:一般用于替代`僵尸代码` 或 `死代码`,解决可读性问题

2. 修饰方法

​    被final修饰的方法,不能被重写

3. 修饰类

​    被final修饰的类,不能被继承,即不能有子类

4. 修饰参数

​    被final修饰的参数,只能读取,不能修饰 

二、抽象类

如何防止父类被实例化? 如果保证子类必须重写父类的方法?

1. 概念

被abstract修饰的类,称为抽象类

该类不能通过new来创建对象,只能被继承

被abstract修饰的方法,称为抽象方法

该方法只有声明,没有具体实现,即没有方法体{},以分号结尾

2. 特性

​    抽象类中可以有抽象方法,也可以没有抽象方法

​    含有抽象方法的类,必须为抽象类

​    子类继承抽象类后,必须**重写/实现**抽象类中所有的抽象方法,否则子类仍然为抽象类

​    抽象方法中可以有构造方法,但不是用来创建对象的,而是用来初始化属性的

三、接口

如果一个抽象类只有抽象方法和常量,则可以定义为接口interface

1. 概念

从本质上来说,接口一种特殊的抽象类,只能包含常量和抽象方法

2. 用法

2.1 定义接口

语法:
interface 接口名{
    常量;
    抽象方法;     
}

(a)接口中的属性,默认被`public static final`修饰,即接口中只能有常量,不能有普通的变量

(b)接口中的方法,默认被`public abstract`修饰,即接口中只能有抽象方法,不能有实现的方法

(c)接口中没有构造方法,不能被实例化

2.2 实现接口

语法:
class 类名 extends 父类 implements 接口名{
    
}

(a)实现接口的类,称为实现类

(b)实现类必须实现接口中所有的抽象方法,且方法必须使用public修饰,否则其为抽象类

2.3 特性

(a)一个类可以实现多个接口,多个接口之间以逗号隔开,间接的实现了多继承

(b)JDK1.8及以后,可以使用`default`关键字修饰方法,此时方法可以有方法体

(c)一个接口可以继承多个其他接口,添加新的属性和抽象方法,但接口不能继承自类

(d)Java中支持接口的多继承,但不支持类的多继承

实现多态:

(a)父类的引用 指定子类的对象 
(b)接口的引用  指定实现类的对象

2.4 作用

(a)间接实现多继承(Java中不支持类的多继承,但可以实现多个接口)
(b)通过接口定义标准规范 
(c)将标准的制定和实现分开

2.5 抽象类和接口的对比

相同点:

- 接口和抽象类都不能被实例化
- 都可以包含抽象方法

不同点:

- 接口中只能有抽象方法(default关键字)和常量,而抽象类中可以有其他的成员
- 接口支持多继承,抽象类不支持多继承

    public static void main(String[] args) {
//        实现了接口 则拥有接口的所有方法
        People p = new People();
        p.run();
//        我们可以使用接口类型的引用指向一个实现了该接口的对象,并且可以调用这个接口中的方法
//        我们不能直接去实例化一个接口,因为接口中的方法都是抽象的,是没有方法体的
        Run p2=new People();
        p2.see();
    }

public interface Run {
    void run();
    void see();
}

public class People implements Run{
    @Override
    public void run() {
        System.out.println("run");
    }

    @Override
    public void see() {
        System.out.println("see");
    }
}

接口理解为模块,功能,行为

接口是纯抽象类,要实现接口的功能,就必须实现里面所有的抽象方法。

这是一边看视频一边学习的笔记-借用了一些老师的笔记内容-如有侵权,通知删除!

新手小白学习之路~~~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值