java抽象类和接口-cnblog

java抽象类和接口

image-20241012055931521

1 抽象类

在解决实际问题时,一般将父类作为抽象类,子类继承父类,并且实例化对象

在一个类中,只要有有一个方法是抽象的,类就是抽象的

抽象类被继承后需要实现所有的抽象方法,抽象类的关键词是abstract

2 接口

接口是抽象类的延伸,接口使用interface进行定义

3 实现接口

一个类继承一个父类的同时再实现一个接口

举一个实现例子

package nb;

interface Ren{  //绘制人的接口
    public void sing();
}


class Teacher { //制作一个人下的teacher类
    public void ZuoShi(){
        System.out.println("Teacher创建的方法");
    }
}

class Tchild extends Teacher implements Ren{
    @Override
    public void sing() {
        System.out.println("老师的孩子使用人类的唱歌方法接口");
    }
}
public class Jk {
    public static void main(String[] args) {
        Tchild tchild = new Tchild();
        tchild.sing();
        tchild.ZuoShi();
    }
}

image-20241011070459672

接口里的方法和类里的方法被同时实现了

4 接口继承接口

如果是接口制成接口,应该使用extend关键字,而不是implements关键字

写一个接口继承接口的案例

package nb;
interface Fatherin{
    void fatherMe();
}

interface Childin extends Fatherin{
    void childMe();
}
class InterTrue implements Childin{ //同时实现子接口和父接口
    @Override
    public void fatherMe() {
        System.out.println("实现父接口的方法");
    }

    @Override
    public void childMe() {
        System.out.println("实现子接口的方法");
    }
}
public class Kak {
    public static void main(String[] args) {
        InterTrue interTrue = new InterTrue();
        interTrue.childMe();
        interTrue.fatherMe();
    }
}

image-20241011072054931

如果类实现了子接口,在类中就要同时重写父接口和子接口的方法,不然会报错

image-20241011072117347

5 接口的多重继承

与类不能多重继承不同,接口可以实现多重继承的语法,子接口可以同时继承多个父接口

写一个案例

package nb;
interface A{
    void a();
}
interface B{
    void b();
}
interface C{
    void c();
}
interface D extends A,B,C{

}
class ConeTrue implements D{

    @Override
    public void a() {
        System.out.println("A接口中的a方法");
    }

    @Override
    public void b() {
        System.out.println("B接口中的b方法");
    }

    @Override
    public void c() {
        System.out.println("C接口中的c方法");
    }
}
public class DuoChong {
    public static void main(String[] args) {
        ConeTrue coneTrue = new ConeTrue();
        coneTrue.a();
        coneTrue.b();
        coneTrue.c();
    }
}

image-20241011072854152

6 接口的默认方法

java8新增了两个默认方法default方法和static方法并且允许这两个方法有方法体

default方法可以被子接口继承,也可以被他的实现类调用,default方法被继承时,可以被子接口重写方法

在一个java类实现了多个接口,这些接口在没有继承关系并且接口中包含相同的default方法,接口实现类会报错

接口实现类必须通过特殊语法,指定该实现类要实现哪个接口的dfault方法

接口.super.方法名(参数)

举例说明

package nb;

interface Def{
    default void deMt(){
        System.out.println("default方法");
    }
}
class AASS implements Def{
    @Override
    public void deMt(){
        Def.super.deMt();
    }
}
public class Deff {
    public static void main(String[] args) {
        AASS aass = new AASS();
        aass.deMt();
    }
}

image-20241011074617377

7 抽象类和接口的区别

抽象类和接口都有子类,其中可以把接口实现的子类称为实现类
抽象类通常用来作为子类的模版,接口通常用来描述子类的行为
子类虽然只能继承一个抽象类,但可以同时实现任意多个接口
创建抽象类需要使用abstract关键字,创建接口需要实现interface关键字
声明抽象类中的抽象方法需要使用abstract关键字,声明接口中的抽象方法可以省略abstract
在接口中可以使用default关键字定义有方法体的非抽象方法,但在抽象类中不能用
在接口中不能有构造方法,但是在抽象类中可以有
在抽象类中可以有代码块,静态代码块和静态方法,但在接口中不能有
抽象类中的成员属性可以定义为任意群贤,任意类型,静态和非静态的方法,但在接口中不能有
子接口可以同时继承多个父接口,但是子抽象类只能继承一个父抽象类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值