(java) 抽象类&接口

抽象类

在Java中有一个关键字叫:abstract,它就是抽象的意思,可以用它修饰类、成员方法,形成抽象类和抽象方法

  • 目标:更简洁高效的形成多态。

  • 语法:在类名或方法前面添加关键字abstract

  • 抽象类:无法进行实例化创建对象,只能作为一种特殊的父类,让子类继承并且实现

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

  • 抽象类和抽象方法的关系:

    1. 抽象类中可以有非抽象类的方法,也不一定有抽象方法。
    2. 抽象方法必须存在在抽象类中。
    3. 子类继承了抽象类,就必须重写抽象类的全部抽象方法,否则也必须定义为抽象类

接口

定义语法:


public interface 接口名 {  
    // 成员变量(常量)   默认被public static final修饰
    // 成员方法(抽象方法)  默认被public abstract修饰 可以省略
} 
  • 接口没有办法创建对象/实例

  • 接口的抽象方法因为是抽象方法,所以也就没有方法体。

  • 接口是用来被类实现(implements)的,实现接口的类称为实现类,一个类可以同时实现多个接口

    修饰符 class 实现类类名 implements 接口1, 接口2, 接口3 , ... {
            //实现类实现多个接口,必须重写完全部接口的全部抽象方法,否则实现类需要定义成抽象类。
    } 
    

案例:

//Protectorate   interface接口
package com.itheima.animalInterface;
public interface Protectorate {
    void protect();
}

//使用接口的Cat类中:
package com.itheima.animalInterface;
public class Cat extends Animal implements Protectorate {
    @Override
    public void protect() {
        System.out.println("猫看家");
    }//全部重写接口中的方法
}

JDK8 之后,新增了三种新的方法格式
默认方法(default method)、私有方法(private method,从JDK 9开始支持)和静态方法(static method)

  1. 默认方法(最重要):
  • 语法格式为在方法前面添加 default 默认方法会隐形的添加 Public
  • 在接口中的抽象方法如果被default修饰,则必须书写方法体
  • 实现了接口的类可以选择性地覆盖(重写)这些方法,也可以直接使用接口中提供的默认实现
  1. 私有方法:
  • 语法为在方法前添加private
  • 在接口中的抽象方法如果被private修饰,则必须书写方法体
  • 该方法用来在接口内部进行工作,外部无法访问和调用
  1. 静态方法:
  • 语法为在方法前添加 static,也会隐形的添加 Public
  • 静态方法属于接口本身,而不是接口的任何实现类
  • 其不允许被重写,且只能通过接口名的方式进行调用

小结:
默认方法帮助我们实现了面对多个类实现接口时,只需要一部分类实现接口时,无需给所有类进行重写,只需要给抽象方法添加default,且书写完整的方法体,就能实现类似子父类之间的效果。

而私有方法就是接口内部如果有需要自己单独实现的操作,且不希望类进行重写,就可以进行private私有化

对于静态方法就是单纯的通过接口这个类,来实现对外的输出,与子类无关,其和私有方法一样,都不期望与继承子类产生关联。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值