Java 学习博客_10 入门——抽象类、抽象方法、接口

简介: 以黑马程序员全套Java教程网课为主。

抽象方法:没有方法体的方法

public abstract void eat();

抽象类:含有抽象方法的类。

(没有抽象方法的类也可以是抽象类,但是意义何在)

抽象类不能直接创建对象,需要子类把抽象方法重写补全后才能创建对象。否则,子类也是抽象方法。

接口

接口是一种公共的行为规范标准,只要符合规范,大家都可以使用。 java 中的接口主要是对行为的抽象。如:

public interface Jumpping{//接口
    public abstract void Jump();
}

public class Cat implements Jumpping{//实现
    //重写 Jump() 方法。如果不重写, Cat 就是一个抽象类
}

接口中的成员变量默认是 public static final 的,不能修改,而且可以通过 Class.成员变量 的方式直接访问。

接口中没有构造方法和非抽象方法。成员方法默认是 public abstract 的。

(但接口的实现类中可以有 super。这是因为所有没有父类的类都默认继承自 Object 类,如果接口的实现类使用 Object 类中的方法就会用到 super)

接口是抽象类,不能直接实例化,可以借助多态的方法实例化。

相较类与类之间不能多继承,只能层层继承:接口可以多实现implements interface1, interface2

接口和接口之间也可以多继承interface1 extends interface2, interface3

总结

在这里插入图片描述

设计原则

抽象类中的抽象方法所有对象中都必须有;接口则是选择性实现的。比如门这一大类,其中不管什么门,防盗门、木门、自动门,都有门的特有行为(开关门、锁门……)只是实现方法可能不一样,所以要在门父类中定义这些抽象方法,在子类中必须实现。

但是对于门来说不是必须有的抽象方法(如响铃)这种抽象方法就应该作为接口,选择性实现。有响铃功能的门实现这一接口,没有响铃功能的门不必实现。

例:有乒乓球运动员、乒乓球教练、篮球运动员、篮球教练。为了能出国交流,乒乓球运动员和教练需要会说英语。分析本例如何用具体类、抽象类、接口实现。

graph TB
A[人]-->B[运动员]
A-->C[教练]
B-->D[篮球运动员]
B-->E[乒乓球运动员]
H[说英语]-->E
H-->G
C-->G[乒乓球教练]
C-->F[篮球教练]

其中,人、运动员、教练是抽象类,说英语是接口。其他具体类需要实现接口,并重写继承的所有抽象方法。

抽象类 / 接口作为形参 / 返回值

类也可以作为形式参数或函数的返回值。

抽象类:如果方法的形参或函数的返回值是抽象类名,实际需要的是实现了该抽象类的子类对象。

如函数形参是Animal,实际需要通过多态的方法Animal a=new Cat();然后把a传给函数。

接口作为形参/函数返回值,和抽象类一样,实际需要的是实现了该接口的类对象。

目录
相关文章
|
12天前
|
数据采集 Java API
java接口防爬虫
7月更文挑战第4天
|
7天前
|
Java 开发者
Java中的Lambda表达式与函数式接口
【7月更文挑战第20天】本文深入探讨Java 8引入的Lambda表达式及其在函数式编程中的应用。我们将分析Lambda表达式如何简化代码、提高可读性,以及它与传统匿名内部类的区别。文章还将介绍函数式接口的概念,并通过实际示例展示如何利用Lambda表达式和函数式接口优化Java代码。
|
8天前
|
并行计算 Java API
深入理解Java中的Lambda表达式与函数式接口
【7月更文挑战第19天】在Java 8中引入的Lambda表达式,不仅简化了代码编写,还为函数式编程提供了支持。本文将探讨Lambda表达式的核心概念、其与函数式接口的关系以及如何在Java中高效利用这一特性来提升代码的简洁性和可读性。我们将通过实例分析Lambda表达式的语法规则和常见用法,同时解释函数式接口的设计原则及其在Java标准库中的应用,旨在帮助开发者更好地理解和运用这一强大的工具。
|
9天前
|
前端开发 JavaScript 安全
|
10天前
|
测试技术 API Android开发
《手把手教你》系列基础篇(九十七)-java+ selenium自动化测试-框架设计篇-Selenium方法的二次封装和页面基类(详解教程)
【7月更文挑战第15天】这是关于自动化测试框架中Selenium API二次封装的教程总结。教程中介绍了如何设计一个支持不同浏览器测试的页面基类(BasePage),该基类包含了对Selenium方法的二次封装,如元素的输入、点击、清除等常用操作,以减少重复代码。此外,页面基类还提供了获取页面标题和URL的方法。
27 2
|
16天前
|
缓存 Prometheus 监控
Java面试题:如何监控和优化JVM的内存使用?详细讲解内存调优的几种方法
Java面试题:如何监控和优化JVM的内存使用?详细讲解内存调优的几种方法
34 3
|
11天前
|
安全 机器人 Java
|
16天前
|
Java API
Java面试题:说明Lambda表达式在Java中的应用,以及函数式接口的概念和作用。
Java面试题:说明Lambda表达式在Java中的应用,以及函数式接口的概念和作用。
14 0
|
2月前
|
安全 Java
从零开始学习 Java:简单易懂的入门指南之不可变集合、方法引用(二十六)
从零开始学习 Java:简单易懂的入门指南之不可变集合、方法引用(二十六)