首页 > 编程语言 >Java抽象类与接口

Java抽象类与接口

时间:2023-02-14 19:55:57浏览次数:51  
标签:Java void 接口 public class 抽象类 abstract

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类型的;
  • 接口中不能含有静态代码块,而抽象类可以有静态代码块;
  • 一个类只能继承一个抽象类,而一个类却可以实现多个接口。

标签:Java,void,接口,public,class,抽象类,abstract
From: https://www.cnblogs.com/xiaomitu/p/17120717.html

相关文章

  • Java开学测试
    2021级《软件工程》课前测试试卷(180分钟) 河北省环保监测中心网络新闻发布系统(卷面成绩40分,占课程过程考核20分) 1、项目需求:河北省环保监测中心网络新闻为搭建公众......
  • JavaWeb
    JavaWebJavaWeb1、基本概念1.1、前言web开发:web,网页的意思,例如:www.baidu.com静态webHTML,css提供给所有人看到的数据始终不会发生变化动态web淘宝,几乎是所......
  • Java方法
    何为方法:1.方法是语句的集合,它们在一起执行某个功能。2.方法是解决一类问题的有序步骤组合。3.方法包含于类或对象中。4.方法在程序中被创建,在其他地方被引用。方法......
  • java面试总结
    java基础为什么java中只有值传递?java中基本类型是通过copy传递值的,引用类型是通过copy引用传递的,所以java中只有值传递。java序列化java不建议使用自带序列化Serializ......
  • java面试题(七)
    1.21说一说hashCode()和equals()的关系参考答案hashCode()用于获取哈希码(散列码),eauqls()用于比较两个对象是否相等,它们应遵守如下规定:如果两个对象相等,则它们必须有相同的......
  • AI人脸检测EasyCVR视频融合平台接口返回数据不全是什么原因?
    EasyCVR平台可在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频资源的鉴权管理、按需调阅、全网分发、智能分析等。平台可支持多协议、多类型......
  • javascript 高级编程系列 - Web Workers
    Webworkders的规范让javascript在后台运行脱离了UI线程,从而解决了大量计算阻塞UI线程导致卡死的问题。在Webworkers没有出现之前,我们可以使用window.setTimeout异步方......
  • Java 查找Panel 里的某个组件 比如 按钮
    遇到到一个需求,需要获取界面里的一个按钮,但是这个按钮是封装的父类嵌入的,知道label的值。 写了一个递归获取它1privateJButtonLookupTheButton(Componentcontai......
  • Spring的FactoryBean接口探秘
    今天接触到一个新项目,杰夫接口对外暴露一个接口:<!--发布服务alias可以改成自己的--><jsf:providerid="puDaoDataService"interface="com.jd.jrdp.exts.server.PuDao......
  • Java入门
    Java特性与优势简单性面向对象可移植性(跨屏台)高性能分布式动态性(反射)多线程安全性健壮性Java的三大版本JavaSE:标准版(桌面程序、控制台......