abstract类和接口interface的联系和区别
一,用关键字abstract类修饰的类称为abstract类(抽象类)。
abstract class A{
………….
}
特点:
1. 抽象类中可以有抽象方法和非抽象方法,但是抽象方法只允许声明不允许实现,而且不允许使用final和abstract同时修饰一个方法。
abstract class A{abstract int min (int x,int y);int max(int x,int y){return x>y?x:y;}
}
2.抽象类不能用new运算符创建对象。如果一个非抽象类是某个类的子类,那么它必须重写父类的抽象方法,给出方法体。
abstract class A{abstract int sum(int x,int y);int sub(int x,int y){return x-y;}
}
class B extends A{int sum(int x,int y){//子类必须重写父类的sum方法return x+y;}
}
抽象类只关心操作,即只关心方法的名字,类型以及参数,不关心这些操作是怎么实现的,即不关系方法体。设计程序时,可以把几个类的共有的轮廓,重要特征抽象成一个抽象类,不需要关心具体细节。
二,java不支持多继承的,一个类只能继承一个父类,但是java引入了接口机制,一个类可以实现多个接口。
interface A{public final int a=10;public abstract void sum(int x,int y);public abstract void sub(int x,int y);
}
class B implements A{//使用implements来实现A接口void sum(int x,int y){return x+y;}void sub(int x,int y){//必须重写A接口的所有抽象方法return x-y;}
}
特点:
1.接口体类只能有常量和抽象方法,即方法都是等待实现的方法。
2,一个类实现了某个接口,必须重写该接口的所有方法。
3.多个类可以实现同一个接口,一个类可以实现多个接口。
三,比较
1.接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。
抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,男人,女人,这两个类(如果是类的话……),他们的抽象类是人。说明,他们都是人。人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它.
2.一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),但是可以实现多个接口(吃饭接口、走路接口),人是根源,吃饭,走路时接口。
3.一个类可以实现多个接口,因为一个对象的动作有很多,但是只能继承一个类,因为一个对象的根,本质只有一个。
4.接口中所有的方法都是抽象的,没有一个有程序体。抽象类是可以有非抽象方法。抽象类和接口中的抽象方法都不实现。
abstract类和接口interface的联系和区别相关推荐
- java 抽象接口类,Java接口(interface)和Java抽象类(abstract class)的区别(详诉版)
1.概述 一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架, 当代表业务逻辑的高层抽象层结构合理时,你底层的具体实现需要考虑的就仅仅是一些算法 ...
- php中的抽象类(abstract class)和接口(interface)
一. 抽象类abstract class 1 .抽象类是指在 class 前加了 abstract 关键字且存在抽象方法(在类方法 function 关键字前加了 abstract 关键字)的类. 2 ...
- Java抽象类(Abstract Class)与接口(Interface)区别
抽象类与接口比较 抽象类跟接口类似,都不能实例化,可能包含不需实现方法或已实现的方法. 抽象类可以定义一些不是静态或常量的字段,定义 public, protected, private访问级别的具体 ...
- c#中抽象类(abstract)和接口(interface)的相同点与区别
相同点: 1.都可以被继承 2.都不能被实例化 3.都可以包含方法声明 4.派生类必须实现未实现的方法 区别: 1.抽象基类可以定义字段.属性.方法实现.接口只能定义属性.索引器.事件.和方法声明,不 ...
- C# 类实现接口(Interface) 多态 多继承
什么是接口 接口在程序中起到规范代码的作用,例如:电脑的USB接口,这些都是已经定义好的了,制造鼠标键盘U盘等厂家就按这种规格做出来的成品在任何电脑上都可以直接使用,而不需要进行适配,这就是规范的使用 ...
- JAVA的abstract修饰符 接口interface用法 抽象类和interface的差别
转自:http://blog.csdn.net/zhandoushi1982/article/details/8458081 abstract修饰符可以修饰类和方法. (1)abstract修饰类,会 ...
- 抽象基类与接口,共性与个性的选择!
抽象基类与接口,共性与个性的选择! C#中的抽象基类(Abstract Class)和接口(Interface)都实现了面向对象中的继承机制,它们通过定义抽象方法匀实现了对继承类的功能上的约束,那么在 ...
- 【转】抽象基类与接口,共性与个性的选择!
抽象基类与接口,共性与个性的选择! C#中的抽象基类(Abstract Class)和接口(Interface)都实现了面向对象中的继承机制,它们通过定义抽象方法匀实现了对继承类的功能上的约束,那么在 ...
- 抽象基类与接口,共性与个性的选择!(区别)
C#中的抽象基类(Abstract Class)和接口(Interface)都实现了面向对象中的继承机制,它们通过定义抽象方法匀实现了对继承类的功能上的约束,那么在如何在恰当的场景选择恰当的继承机制是 ...
最新文章
- 6、UmbracoNewsSite:添加新闻分类
- 专访阿里云域名与网站业务总经理宋瑛桥:域名未来将更加个性化、生态化和规范化...
- storm的基本概念
- mogodb 的自定义函数定义及引用
- w7计算机不显示cdf盘,微软确认Win7SP1再现黑屏错误
- POSIX和SYSTEM的消息队列应该注意的问题
- 前端:CheckBox事件函数js
- 如何借助OpManager解决存储监控问题?
- 高一计算机信息基础课本内容,高中信息技术基础(必修)_教案
- 做到这一点,帮你每年多赚10万!
- 58、JAVA Collections集合排序相关静态方法---方法1
- java课程设计 雍俊海_java课程设计模拟科学计算器【参考】.doc
- An element could not be located on the page using the given search parameters.
- C语言在坐标轴上输出曲线,C语言打印正弦曲线、直线、圆等等
- 深度学习基础--SOFTMAX回归(单层神经网络)
- 获取某个时间的当月起止时间
- 基于MATLAB二分法求解一元二次方程的根
- C语言基础09——数据在内存中的存储。整型的存储、大小端讲解、浮点数的存储、杨辉三角、找凶手、猜名次
- ACM-ICPC 2018 南京赛区网络预赛丨AC Challenge丨状压DP
- 记录CentOS8 开机卡住的问题解决过程
热门文章
- MDK:assert_param函数未定义的错误:Error: L6218E
- 深度学习概览之自然语言处理:从基本概念到前沿研究
- C++ Primer 5th笔记(chap 16 模板和泛型编程)类模板和static
- 《图解密码技术》分组密码(3) 密文分组链接CBC模式
- C++ Primer 5th笔记(chap 13 拷贝控制)综述
- 初等数论--原根--原根间的关系,原根个数
- 设计模式--观察者(Observer)模式
- 【Python Turtle合集】”外面的花已经开得很像样了, 我看到风拥作一团, 前来庆贺“(春天来啦~)
- 动态规划(浅层基础)
- 关于LookupError: No installed app with label ‘admin‘.报错的解决