抽象类与接口

本文详细介绍了Java中的抽象类和接口的概念、语法及特性。抽象类不可实例化,包含抽象方法,子类必须重写。接口定义了规范,包含抽象方法和默认方法,类可以实现多个接口。JDK1.8以后接口新增了静态和默认方法。实现接口的类必须实现所有抽象方法。
摘要由CSDN通过智能技术生成

一. 抽象类

1.抽象类的概念

由abstract修饰的类称之为抽象类,抽象类也是类,同样可以包含类的五大成分(成员变量,构造方法,成员方法,代码块,内部类),抽象类中还可以包含抽象方法。抽象类不可以创建对象即不能被实例化,只能被其他类继承使用。当子类继承抽象类时,必须重写抽象方法,除非子类也是抽象类,否则编译会报错。

2.抽象方法
1.语法:

访问修饰符+abstract+返回值类型+方法名();
例:public abstarct void eat();

2.当子类继承抽象类时,必须重写抽象方法

注意:抽象方法是没有方法体的

代码实现:

 abstract class Animals {
    public abstract void eat();

}
class Fox extends Animals{
//重写父类中的抽象方法
    @Override
    public void eat() {
        System.out.println("狐狸在吃东西");
    }
}

二. 接口

1.接口的概念

接口就是一种公共的规范标准。接口是一种引用数据类型。接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为

2.实现语法

格式定义
访问修饰符+interface+接口名称{}
例:public interface Runnable {}
类实现接口
访问修饰符+class+实现类名+implements+接口名{}
例 public class MyRunable implements Runnable{}

public interface Animals {
    public abstract void run();
}
class Cat implements Animals{

    @Override
    public void run() {
        
    }
}
3.接口在不同版本的变化
1.JDK1.7之前

接口中只有 公开的静态常量和 公开的抽象方法
使用 interface 关键字
接口中的所有成员变量都默认是由 public static final 修饰的。
接口中的 所有方法 都默认是由 public abstract 修饰的。也可以使用 protected ,但不能用 private 。
接口中的 所有方法 都没有方法体。
接口没有构造方法。因为构造方法用于创建对象。
实现接口的类 必须提供接口中所有方法的具体实现内容。

2.JDK1.8版本

在JDK7 的基础上可以声明 静态方法 和 默认方法,必须写方法体
默认方法:
a.default修饰词必须添加,用于表示默认方法,不是表示访问修饰符
b.public修饰词是可以省略不写
静态方法
a.public修饰词是可以省略不写
b.属于接口的,通过接口直接调用.
调用方式: 接口名.方法名

3.JDK1.9版本

基于 JDK8 增加了私有静态方法的声明
私有方法(静态私有/普通私有)
静态私有: 可用于提取静态方法中共有部分内容
普通私有: 可用于提取默认方法中共有部分内容
注意事项:
接口的实现类(非抽象类)必须重写接口中所有的抽象方法;
接口中的静态方法用接口名称调用(接口名.静态方法名) ;
接口中 default (用于表示默认方法,不是表示访问修饰符)方法属于实现接口类的对象方法,可以重写 ;
接口中的 private static 方法只能在接口内调用 ;
继承的接口实现子接口的抽象方法需要加 dafault 。

3.接口的特性

1.类与类之间的关系叫做继承(extends)。类与接口之间的关系叫做实现(implements)。接口与接口之间的关系也叫做继承(extends)。
2.类与类之间只能单继承,类与接口之间可以多实现,接口与接口之间可以多继承
例子:
类与接口之间可以多实现:public class Cat implements Animals1,Animals2{}
接口与接口之间可以多继承:public interface Animals2 extends Animals,Animals1{}
3.当一个非抽象的类实现接口的话,必须将接口中所有的抽象方法全部重写。
4.继承和实现都存在的话,extends 关键字在前,implements 关键字在后
例子:public class Cat extends Animals implements Animals1,Animals2{}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值