【Java】抽象类_接口_最终类

简介: 【Java】抽象类_接口_最终类

类的用途

       1.放置静态属性、静态方法的地方                                


       2.用来实例化对象的模板                                              


       3.用来供其他人继承


抽象类——只可被继承

1.语法:


       在定义类的时候,添加 abstract 修饰,这个类就是抽象类


2.java中赋予了抽象类一项新的能力(普通类不具备)


       抽象类中允许定义一些方法,但没有被实现(没有方法体、只是声明),这些方法是专门留给子类去实现的,这些方法被称为抽象方法


接口——完全可以被理解成特殊的抽象类


       接口和抽象类一样,不能被实例化,只可被继承


       只能出现方法,这些方法,默认是抽象方法,并且被public所修饰


       从某些方向讲:接口是一个极端的抽象类(全部只有抽象方法的抽象类)


定义接口


       关键字:interface

public interface Flyable {
    void fly();
}

        void  fly()     默认视为        public  abstract  void  fly()

接口的功能是被实现

关键字:implements

public class 麻雀 implements Flyable {
    @Override
    public void fly() {
    }
}

接口本身也允许被继承,继承自另外的接口,同时允许多继承

interface A { void a(); }
interface B { void b(); }
interface z extends A,B { void z(); }

由于接口Z继承自接口A和接口B,所以,最终Z中有的抽象方法是 a()、b()、z()


最终类——只能实例化对象,不能被继承

通过 final 修饰类,表示最终类


public final class TestClass{
    public void a(){
    }
}

接口 VS 抽象类

相同点

1)不能被实例化

2)允许出现抽象方法


不同点

1)接口只能出现抽象方法,其他的内容通通没有


2)普通类和抽象类之间的关系是继承(extends)关系,只能单继承


     普通类和接口之间的关系是实现(implements)关系,允许一个类实现多个接口


3)接口和接口之间也允许继承关系,允许多继承


4)抽象类中可以有属性、普通方法,接口中只能出现抽象方法(默认都是public)


5)类总归还是描述一类事物,接口大多描述的是一组能力


5.png


目录
相关文章
|
5天前
|
存储 Java 编译器
Java中的抽象类与接口,在阿里工作5年了
Java中的抽象类与接口,在阿里工作5年了
|
4天前
|
自然语言处理 Java API
Java 8的Stream API和Optional类:概念与实战应用
【5月更文挑战第17天】Java 8引入了许多重要的新特性,其中Stream API和Optional类是最引人注目的两个。这些特性不仅简化了集合操作,还提供了更好的方式来处理可能为空的情况,从而提高了代码的健壮性和可读性。
26 7
|
2天前
|
并行计算 Java API
Java 8中的接口默认方法和静态方法以及并行数组
【5月更文挑战第19天】Java 8引入了许多新特性,其中包括接口的默认方法和静态方法,以及并行数组的能力。这些特性增强了Java的面向对象编程模型和数组处理能力。让我们深入了解它们的概念和实践。
20 2
|
2天前
|
安全 Java 容器
Java一分钟之-并发编程:线程安全的集合类
【5月更文挑战第19天】Java提供线程安全集合类以解决并发环境中的数据一致性问题。例如,Vector是线程安全但效率低;可以使用Collections.synchronizedXxx将ArrayList或HashMap同步;ConcurrentHashMap是高效线程安全的映射;CopyOnWriteArrayList和CopyOnWriteArraySet适合读多写少场景;LinkedBlockingQueue是生产者-消费者模型中的线程安全队列。注意,过度同步可能影响性能,应尽量减少共享状态并利用并发工具类。
17 2
|
3天前
|
存储 Java
Java一分钟之-高级集合框架:Queue与Deque接口
【5月更文挑战第18天】本文探讨Java集合框架中的`Queue`和`Deque`接口,两者都是元素序列的数据结构。`Queue`遵循FIFO原则,主要操作有`add/remove/element/peek`,空队列操作会抛出`NoSuchElementException`。`Deque`扩展`Queue`,支持首尾插入删除,同样需注意空`Deque`操作。理解并正确使用这两个接口,结合具体需求选择合适数据结构,能提升代码效率和可维护性。
29 4
|
4天前
|
设计模式 算法 Java
Java的前景如何,好不好自学?,万字Java技术类校招面试题汇总
Java的前景如何,好不好自学?,万字Java技术类校招面试题汇总
|
6天前
|
Java API 容器
Java8函数式编程接口:Consumer、Supplier、Function、Predicate
Java8函数式编程接口:Consumer、Supplier、Function、Predicate
8 1
|
6天前
|
安全 Java 开发者
Java一分钟之-文件与目录操作:Path与Files类
【5月更文挑战第13天】Java 7 引入`java.nio.file`包,`Path`和`Files`类提供文件和目录操作。`Path`表示路径,不可变。`Files`包含静态方法,支持创建、删除、读写文件和目录。常见问题包括:忽略异常处理、路径解析错误和权限问题。在使用时,注意异常处理、正确格式化路径和考虑权限,以保证代码稳定和安全。结合具体需求,这些方法将使文件操作更高效。
11 2
|
6天前
|
安全 Java 开发者
Java一分钟之-Optional类:优雅处理null值
【5月更文挑战第13天】Java 8的`Optional`类旨在减少`NullPointerException`,提供优雅的空值处理。本文介绍`Optional`的基本用法、创建、常见操作,以及如何避免错误,如直接调用`get()`、误用`if (optional != null)`检查和过度使用`Optional`。正确使用`Optional`能提高代码可读性和健壮性,建议结合实际场景灵活应用。
22 3
|
8月前
|
Java
Java接口和抽象类
Java接口和抽象类
55 0