首页 > 编程语言 >[Java基础]-- 接口、抽象类

[Java基础]-- 接口、抽象类

时间:2022-11-03 14:36:41浏览次数:48  
标签:Java -- void cry 接口 抽象类 方法 public


一直都在使用接口,没怎么用过抽象类,今天面试遇到了面试官提问:

抽象类和接口有什么区别啊?

下面就关于这个问题好好研究一下,希望在以后的工作中能牢记。。

以下是《疯狂java讲义》第三版对他们的解释:

[Java基础]-- 接口、抽象类_抽象类

 

  • 接口可以继承接口。
  • 抽象类可以实现(implements)接口,但不可以继承自接口。
  • 抽象类可以继承具体类。
  • 抽象类中可以有静态的 main方法。抽象类里可以有抽象方法,抽象方法一定要在抽象类里,抽象类可以派生,抽象类的父类可以是非抽象类。
  • 某一个类如果定义了某个方法是抽象方法,其子类并非一定要实现(不想实现父类中的抽象方法的话,子类同样定义成抽象类就是了)。
  • 当你想实例,就要实现所有抽象方法。
  • 可以使用接口声明对象,但必须使用其实现类实例化,接口实例化报错。
  • Collection list = new ArrayList();Collection是接口,Arraylist是其实现类。这样的话,接口引用c就指向了具体的实现接口的对象,多态的体现。这样的好处在于通过接口c来调用的方法可以屏蔽掉具体的方法实现。换而言之,我只需要知道c要做什么,而不需要知道c怎么做,也就是在JAVA编程中经常用到的接口回调,即面向接口的编程更为重要的一点是Collection c只是引用,是一个指向具体实现类的引用。

 

 

一、使用区别

接口:

类中使用时需要实现本接口的方式

抽象类:

类中使用时是采用继承本类的方式

 

举例:

1、现在有抽象类动物类(AnimalInfo.java)

public abstract class AnimalInfo {
public abstract void cry();//哭方法

public void call(){}//正确的方式

//public void cry(); //错误的方式

}

 

2、有接口类动物类(Animal.java)

 

public interface Animal {
public void cry();

public abstract void call(); //正确的方式
// public abstract void hit(){};//错误的方式
}

 

新建一个动物:猫(Cat.java)

 

实现哭方法的第一种方式:继承抽象类AnimalInfo.java 

 

 

public  class CatInfoextendsAnimalInfo {
//实例化时必须实现cry()方法
private AnimalInfo am=new AnimalInfo() {
@Override
public void cry() {

}
};

 

 

/**由于继承AnimalInfo类而必须实现的cry()方法*/

 

 

@Override
public void cry() {
//调用方法
am.call();
}
}

 

实现哭方法的第二种方式:实现接口类Animal.java

 

public class Cat implementsAnimal{
@Override
public void cry() {

}
}

 

二、定义

接口:特殊的抽象类,接口中可以有抽象方法

抽象类:抽象类中的方法都是抽象方法


标签:Java,--,void,cry,接口,抽象类,方法,public
From: https://blog.51cto.com/u_13966077/5819841

相关文章

  • SpringBoot配置swagger
    1、引入依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><......
  • 什么是mysql数据库?MySQL的特点有哪些?
    MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,属于Oracle旗下产品MySQL是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的RDBMS(Re......
  • 5+:非肿瘤能量代谢思路来喽
    原文公众号:一起实验网对下述分析方法感兴趣或者没有研究思路的小伙伴,欢迎踊跃探讨! 早!今天小编和大家分享一篇10月刚刚发表在FrontCardiovascMed杂志(IF:5.846)的文章《I......
  • [Java应用]-- 拼接多张图片
    实现代码如下importjava.awt.image.BufferedImage;importjava.io.File;importjavax.imageio.ImageIO;/****@类功能说明:java拼接多张图片,生成的格式是jpg、bmp......
  • [数据库基础]-- 字符串截取函数substr、substring以及 case when函数使用
    使用说明:1、使用:substr使用范围:oracle、mysql、sqlserversubstring使用范围:mysql、sqlserver 2、举例:现有表:t_user name、age字段查询需求:如果name字段中的第5个字符有“......
  • 第七章Python实训
    test7-1    test7-2   test7-3    test7-4    test7-5   ......
  • gitlab正确上传文件方法
    一.用户邮箱绑定打开电脑命令提示符首先要配置好用户名和邮箱查看用户名和邮箱gitconfiguser.namegitconfiguser.email修改用户名和邮箱gitconfig--globaluser.n......
  • [MongoDB基础]-- 简化MongoAPI(spring-data-mongo)第三部分----Criteria和Query对象的
    Criteria对象代表的是查询条件1、举例说明(1)mongosql对应关系:name:"suns"});-------->Criteriacriteria=newCriteria("name");is("suns");......
  • flink cdc - mysql binlog配置
    binglog简介binlog是二进制日志,并且是事务安全性binlog记录了所有的DDL和DML(除了数据查问语句)语句应用场景监听配置流,广播配置捕获mysql变更的数据流mysqlbin......
  • [HBase进阶]--rowkey设计要点(官方文档介绍)
    官方文档说明 ​​http://hbase.apache.org/book.html#rowkey.design​​一、Hotspotting(热点效应) 1、hbase是字典排序,这是一种优化扫描的方式,它允许你去把相关的行存储在......