【从0开始学习Java | 第8篇】抽象类和接口

📂 best365官网登录 ⏳ 2025-11-03 03:48:47 👽 admin 👁️ 3450 💾 44
【从0开始学习Java | 第8篇】抽象类和接口

文章目录🥝抽象类概念如何定义一个抽象类抽象方法定义语法📖抽象类总结规定🧾🥝接口接口定义实现接口语法接口特性🍂接口与类的区别⚠️抽象类和接口的区别⚠️

🥝抽象类

概念

在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类,即该抽象类反应了该类的大致信息,但不够充分,还需要继续补充。

注意:抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样

在 Java 中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口

如何定义一个抽象类

public abstract class 类名{

//定义一个抽象类

}

抽象方法定义语法📖

如果你想设计这样一个类,该类包含一个特别的成员方法,该方法的具体实现由它的子类确定,那么你可以在父类中声明该方法为抽象方法。

Abstract 关键字同样可以用来声明抽象方法,抽象方法只包含一个方法名,而没有方法体

访问修饰符 abstract 返回值类型 方法名(参数列表);

//知道要做一件事情,但不知道具体怎么去做这件事情

代码示例:

public abstract class Animal {

//抽象方法是没有方法体的。因为方法体就是表示知道具体怎么去做这件事情。

public abstract void eat();

}

public class Panda extends Animal {

@Override

public void eat() {

System.out.println("熊猫吃竹叶");

}

}

public class Tiger extends Animal{

@Override

public void eat() {

System.out.println("老虎吃肉");

}

}

public class AnimalTest {

public static void main(String[] args) {

Animal a1 = new Panda();

a1.eat();

Animal a2 = new Tiger();

a2.eat();

}

}

声明抽象方法会造成以下两个结果:

如果一个类包含抽象方法,那么该类必须是抽象类任何子类必须重写父类的抽象方法,或者声明自身为抽象类

继承抽象方法的子类必须重写该方法。否则,该子类也必须声明为抽象类。最终,必须有子类实现该抽象方法,否则,从最初的父类到最终的子类都不能用来实例化对象

抽象类总结规定🧾

抽象类不能被实例化(初学者很容易犯的错),如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现,也就是方法的具体功能构造方法,类方法(用 static 修饰的方法)不能被声明为抽象方法抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类

🥝接口

接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过实现接口的方式,从而来继承接口的抽象方法。

接口并不是类,类描述对象的属性和方法。接口则包含类要实现的方法。

接口定义

[public] interface 接口名 {

[public static final]

数据类型 变量名 = 变量的值; //接口中定义变量,该变量是静态

常量,在定义的时候必须赋值

返回值类型 方法名([参数列表]);//定义接口方法

default 返回值类型 方法名([参数列表]) {//接口中定义的默认方法,必须在JDK8及以上版本

使用

[ return 返回值;]

}

static 返回值类型 方法名([参数列表]) {//接口中定义的静态方法,必须在JDK8及以上版本

使用

[ return 返回值;]

}

private 返回值类型 方法名([参数列表]) {//接口中定义的私有方法,必须在JDK9及以上版本

使用

[ return 返回值;]

}

}

实现接口语法

访问修饰符 class 类名 implements 接口名1, 接口名2,...接口名n{

}

例子:

public interface USB {

void service(); //USB接口服务

}

public class KeyBoard implements USB {

@Override

public void service() {

System.out.println("键盘已接入,可以开始打字了");

}

}

接口特性🍂

接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错)接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量(并且只能是 public,用 private 修饰会报编译错误)接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法

接口与类的区别⚠️

接口不能用于实例化对象接口没有构造方法接口中所有的方法都必须是抽象方法,Java 8之后接口中可以使用default关键字修饰的非抽象方法接口不能包含成员变量,除了 static 和 final 变量接口不是被类继承了,而是被类实现接口支持多态继承

抽象类和接口的区别⚠️

特性接口(Interface)抽象类(Abstract Class)继承关系一个类可实现多个接口(多实现)一个类只能继承一个抽象类(单继承)成员变量只能是public static final常量可包含任意修饰符的成员变量方法实现抽象方法无实现;默认方法和静态方法有实现可包含普通方法(有实现)和抽象方法(无实现)构造方法无构造方法有构造方法(供子类调用)设计意图定义 “能做什么”(行为规范),体现 “like-a” 关系定义 “是什么”(类的本质),体现 “is-a” 关系单/多继承支持多继承只能单继承一句话总结:接口侧重 “功能扩展”,抽象类侧重 “继承体系”。

如果我的内容对你有帮助,请 点赞 , 评论 , 收藏 。创作不易,大家的支持就是我坚持下去的动力!

相关数据包

集思广益

集思广益

📅 09-23 🔗 best365官网登录
投影笔怎么用

投影笔怎么用

📅 10-06 🔗 365bet体育在线游戏
🛒电商小知识:拼多多一天能刷多少单?刷单数量如何确定🧐
便利店在五行中属于哪类

便利店在五行中属于哪类

📅 07-01 🔗 足球365是什么意思
← 一文读懂阳历、阴历和农历的区别 活动介绍 →