【Java基本功】聊聊抽象类和接口的区别

news/2023/12/9 19:37:37

1 抽象类一般会实现一部分操作,并且留一些抽象方法让子类自己实现,比如Stringbuffer和Stringbuilder的父类abstractStringbuilder。

2 接口一般指一种规定,比如一个map接口中,可能需要实现增删改查等功能,如果你想实现一个具体map,这些方法就必须按照规定去实现。

3 另外,一个类可以实现多个接口,但是不能继承多个类。 然而接口却可以继承多个其他接口。这一点很神奇。

下面看一下具体的例子,有一些小细节平时可能不会注意。

class A {

}

interface M extends N,L{

}

interface N{

}

interface L{

}

interface 接口 {

public final int i = 1;//变量默认都为public final修饰

final A a = null;//基本数据类型和引用都一样

//protected void a();//报错

//private //报错

public abstract void a();// 方法都是public abstract修饰的。



//void b(){} 报错,接口里的方法不能有方法体,也不能有{},只能有();



// final void b();

// 注意,抽象方法不能加final。因为final方法不能被重写。

//但如果抽象方法不被重写那就没有意义了,因为他根本没有代码体。


}

abstract class 抽象类 {

public final int i = 1;//变量并没有被pulic和final修饰,只是一般的成员变量

public final A a = null;



private void A(){}//抽象类可以有具体方法

abstract void AA();//抽象方法没有方法体



//private abstract void B();//报错,组合非法

// 因为private修饰的方法无法被子类重写,所以和final一样,使抽象方法无法被实现。


}

//抽象类也可以被实例化,举例说明

abstract class B{

B() {

    System.out.println("b init");

}

}

class C extends B{

C(){

    super();

    System.out.println("c init");

}

}

public class 接口对比抽象类 {

@Test

public void test() {

    C c = new C();

    //结果先实例化B,再实例化C。

    //因为会调用到父类的构造方法。

}

}


http://www.niftyadmin.cn/n/3113771.html

相关文章

ASP数据库编程SQL常用技巧

ASP数据库编程SQL常用技巧 一.怎样删除一个表中某个字段重复的列呀,举个例子  表[table1]id name1 aa2 bb3 cc1 aa2 bb3 cc我想最后的表是这样的id name 1 aa2 bb3 cc回答:将记录存到临时表#t中,重复的记录只存一条,然后将临时表#t中的记录再存回原表中…

回溯算法的了解

目录 什么是回溯法 DFS深度优先遍历 N皇后问题 Offer 12 矩阵中的路径 排列/组合/子集问题 46. 全排列 Offer 38字符串的排列​编辑 78子集 39组合总和 17电话号码的字母组合 401二进制手表 1079活字印刷 494 目标和 括号问题 22括号生成 690员工的重要性 733图像渲染…

Spring Batch 使用场景

2019独角兽企业重金招聘Python工程师标准>>> 一个标准的批处理程序通常会从数据库,文件或者队列中读取大量的数据和记录,然后对获取的数据进行处理,然后将修改后的格式写回到数据库中。 通常 Spring Batch 在离线模式下进行工作&a…

oauth协议原理

oauth协议关系图(如获取微信用户信息):oauth一般授权步骤:转载于:https://www.cnblogs.com/afei1759/p/11154678.html

JS 异步编程六种方案

前言 我们知道Javascript语言的执行环境是"单线程"。也就是指一次只能完成一件任务。如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务。 这种模式虽然实现起来比较简单,执行环境相对单纯,但…

链表的删除(3)

步骤如下: 情况1:删除链表内的第一个结点只需将链表结构指针只需下一个结点。 情况2:删除链表内的最后一个结点只要将指向最后一个结点的结构指针指向NULL。 情况3:删除链表内的中间结点只要将删除结点的结构指针,指向删除结点后…

Offer刷题——1

目录 剑指 Offer 03. 数组中重复的数字 剑指 Offer 04. 二维数组中的查找​编辑 剑指 Offer 05. 替换空格 剑指 Offer 06. 从尾到头打印链表 剑指 Offer 03. 数组中重复的数字 class Solution {public int findRepeatNumber(int[] nums) {Map<Integer,Integer> mapne…

杭电2037

此题是一道典型的贪心问题呵呵&#xff01;&#xff01;&#xff01;首先将输入的数据对结束时间进行排序&#xff0c;然后开始依次统计即可&#xff01;&#xff01;&#xff01;呵呵&#xff01;关于sort()函数的讲解请参考&#xff1a;http://www.cnblogs.com/xiohao/archiv…

Boost Graph Library 库小结1

Boost Graph Library使用泛型的思想&#xff0c;完整的编写了图中的各类算法。比如广搜&#xff0c;深搜&#xff0c;最短路径等等 1.创建一个图 1.1 图的表示 图可以有邻接矩阵和邻接表来表示&#xff0c;而在BGL中&#xff0c;则使用adjacency_list和adjacency_matrix来表示&…

算法-链表基础结构算法

目录 offer25合并两个排序的链表 23合并K个升序列表 Offer22 链表中倒数第k个节点 19删除链表的倒数第N个节点​编辑 Offer06从尾到头打印链表 Offer18删除链表的结点 Offer24反转链表 25K个一组翻转链表 Offer35复杂链表的复制 2两数相加 141环形链表 142环形链表…

极限编程(eXtreme Programming)

极限编程(eXtreme Programming)是一种开发纪律&#xff0c;以简单性、交流、反馈和勇气为基本宗旨。它的做法是以有效的实践规则将整个团队紧密联系起来&#xff0c;通过充分的反馈使团队能随时知道自己目前的状况和恰当的调节规则以适应自己的特殊情况。 在极限编程中&#x…

JavaWeb中文乱码解决方式

一、Content-Disposition 文件下载-文件名的中文乱码1. response.setHeader ( "Content-Disposition","attachment;filename" java.net.URLEncoder.encode ( name,"utf-8" ) )2. response.setHeader("Content-Disposition", "att…

那是什么进程 —— wmpnscfg.exe是什么? 它为何运行?

你想知道为什么会有这么多的服务在运行, 你浏览了任务管理器, 看到两个和媒体播放器(Windows Media Player)有关的...但你根本没有在使用媒体播放器. 它是什么? 它不太像是一个占用很多内存的进程...我仅仅是因为这个进程不为什么就自己重新运行而恼火, 把它关掉后它又不知怎么…

基于数组结构刷题

目录 双指针用法 26删除有序数组的重复项 27移除元素​编辑 283移动0 左右指针 334反转字符串 Offer 57和为S的两个数字 数组技巧之前缀和 二维矩阵中的前缀和 offer66构建乘积 560. 和为 K 的子数组 双指针用法 26删除有序数组的重复项 这道题就很能体现数组的特性…

testlink搭建教程

1&#xff0c;下载testlink安装包请加QQ群299524235&#xff0c;在群文件中下载2.配置Apache环境和PHP环境解压testlink文件到Apache中&#xff0c;通过127.0.0.1/testlink访问3.配置环境第一个问题&#xff1a;解决方案&#xff1a;请使用 chmod 777 ➕ 这个文件夹刷新即可第二…

使用Spring Cloud需要了解一些概念

Spring Cloud是一个基于Spring Boot实现的微服务架构开发工具&#xff0c;它为基于JVM的微服务开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一站式的开发框架。而上文提到的微服务架构就是将一个…
最新文章