Java抽象类与接口

Java中抽象类与接口

Java抽象类

在java中定义抽象类使用abstract关键字,具体用法如下:

abstract class AbstractClassName{
    
}

需要注意的是,定义一个抽象类的类名应该使用Abstract或者Base开头,这是一个约定。

抽象类是不能被实例化的,也就是说无法通过new关键字实例化对象,但是抽象类是可以有子类的,也就是说抽象类支持继承,例如如下:

public class SubAbstractClassName extends AbstractClassName {
    
}

此外,如果需要在普通类里面定义抽象方法,这个类也需要使用abstract关键字修饰,例如如下:

public abstract class ClassName{
    abstract void eat();
    void doing(){
        
    }
}

如果父类是一个是一个抽象类,那么它的子类在继承这个父类的同时必须要实现父类的抽象方法,例如如下:

public  abstract class AbstractClass{
    void eating();
} 


piblic SubClass extends AbstractClass{
    @Override
    void eating(){
        ...
    }
}

抽象类的应用场景

第一个场景

我们希望一个通用的功能能够被子类重复使用;

第二个场景

我们在抽象类中定义好API,然后在子类扩展中实现的时候就可以使用抽象类;

Java接口

在java中,接口通过interface关键字来定义接口,接口里面可以定义常量、静态方法、抽象方法、默认方法,例如:

public interface Interface{
    public static final Stirng GLOBAL_ID=65535;
    
    public abstract void eat();
    
    public static void sleep(){
        sleep=!sleep;
    }
    
    public default void goWork(){
        ...
    }
}

在java接口中,接口是不允许被实例化的,也就是说,不允许通过new关键字实例化接口对象。接口必须被实现然后才可以被实例化,例如:

public interface Interface{
    
}

public class InterfaceInstance implements Interface{
    ...
}

public class MainClass{
    public void instance{
        new InterfaceInstance();//.....
    }
}

抽象类与接口的区别

  • 抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;
  • 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;
  • 接口中不能含有静态代码块,而抽象类可以有静态代码块;
  • 一个类只能继承一个抽象类,而一个类却可以实现多个接口。
posted @   LilyFlower  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示