java和前端的接口_第十八节:详解Java抽象类和接口的区别

f4cb07d92e09d2a1af943e506670a28f.png

前言

对于面向对象编程来说,抽象是它的特征之一。

在Java中,实现抽象的机制分两种,一为抽象类,二为接口。

抽象类为abstract class,接口为Interface。

今天来学习一下Java中的抽象类和接口。

目录

什么是抽象

什么是抽象类

什么是接口

区别

代码例子

结语

什么是抽象

从具体事物抽出,概括它们共同的方面,本质属性与关系等,称为抽象。看不见,摸不着的东西叫做抽象,抽象是人们对世界万物的感觉,用特定的图像表达出来,要理解抽象的东西,就必需从内心感受它们。

举例,红色这个词语本身,在没有建立存在色彩这种概念以前,就是一个很抽象的东西。抽象说直白点就是把现实生活中复杂的问题抽象成一个简单的问题。举个例子,如人这个现实中的东西,抽象下就是person这个对象,对象有名字即类名,接着有属性即年龄,性别,身高等。对于对象中的方法即是人要吃饭,睡觉等。

什么是抽象类

抽象类的定义和使用格式

abstract class 类名{

类体

}

class 类名 extends 抽象类 {

//实现全部抽象方法

}

抽象类是类对象的抽象集合,抽象类使用abstract关键字修饰,abstract不能与final并列修饰同一个类,在抽象类中具体抽象的是属性和行为,在抽象类中,含有抽象方法的类为抽象类,一定是抽象类,但抽象类中不一定含有抽象方法。

抽象类不能被实例化,如果要实例化,需通过子类继承抽象类,然后子类必须重写父类的所有抽象方法。抽象方法在抽象类,仅此声明,方法的具体实现在子类中进行。抽象类只有被继承才有用武之地。

//抽象类

public abstract class Person {

public abstract void run();

}

//子类继承抽象类

public class Studentone extends Person{

@Override

public void run(){

System.out.println("人会跑");

}

}

//测试

public class Test {

public static void main(String[] args){

Person person = new Student();

person.run();

}

}

//结果

人会跑

什么是接口

接口的定义和使用格式

interface 接口名 {

[public] [static] [final] 变量;

[public] [abstract] 方法;

}

class 类名 implement 接口列表 {

//实现所有接口中声明的方法

}

接口是类行为方法的抽象集合,类行为方法,是对方法进行抽象,接口不是一个类,对于抽象类,它是对对象的抽象集合,对象即包含对属性和方法,接口是比抽象类更加抽象的一种。

Java中的接口是为了降低功能模块间的耦合,子接口中所有方法都是抽象的,都是公有的。接口中的属性是全局常理即为public static final的,方法即public static的。关键字implements实现接口,Java中不能继承多个抽象类,但能实现多个接口,记住接口只能继承接口。

interface Demo{

void sleep();

void play();

}

class Test implements Demo{

void sleep();

void play();

}

类必须实现接口中所有的方法,但抽象类可以不用实现接口中的所有方法。

区别

抽象类和接口语法层次

public abstract class Demo {

abstract void method1();

void method2(){

}

}

interface Demo {

void method1();

void method2();

}

可以看出接口是抽象类的特殊化。

抽象类和接口设计层次

抽象类是对类抽象,而接口是对行为的抽象。

抽象类为继承关系,接口为实现类与接口之间的契约关系。

抽象类为单继承,接口为多“继承”。子类只能继承一个抽象类,但可实现多个接口。

代码

//抽象类

abstract class Person {

abstract void run();

abstract void jump();

}

//接口

interface School{

void go();

}

//实现

class Student extends Person implements School{

void run();

void jump();

void go();

}

抽象类中成员变量默认为friendly,函数修饰符public,protected,default。

接口属性为静态,public static final,成员函数为public。

结语

详解Java抽象类和接口的区别

小礼物走一走 or 点赞

c065006f671884a6d6707b33fdb0754d.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值