理解抽象类和接口

java------抽象类和接口【详解】 包含抽象方法的类我们称为。 阅读详情

接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法。

       抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力。他们两者之间对抽象概念的支持有很大的相似,甚至可以互换,但是也有区别。


      一、抽象类

       我们都知道在面向对象的领域一切都是对象,同时所有的对象都是通过类来描述的,但是并不是所有的类都是来描述对象的。如果一个类没有足够的信息来描述一个具体的对象,而需要其他具体的类来支撑它,那么这样的类我们称它为抽象类。比如new Animal(),我们都知道这个是产生一个动物Animal对象,但是这个Animal具体长成什么样子我们并不知道,它没有一个具体动物的概念,所以他就是一个抽象类,需要一个具体的动物,如狗、猫来对它进行特定的描述,我们才知道它长成啥样。

      在面向对象领域由于抽象的概念在问题领域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能实例化的。

      同时,抽象类体现了数据抽象的思想,是实现多态的一种机制。它定义了一组抽象的方法,至于这组抽象方法的具体表现形式有派生类来实现。同时抽象类提供了继承的概念,它的出发点就是为了继承,否则它没有存在的任何意义。所以说定义的抽象类一定是用来继承的,同时在一个以抽象类为节点的继承关系等级链中,叶子节点一定是具体的实现类。(不知这样理解是否有错!!!高手指点….)

      在使用抽象类时需要注意几点:

         1、抽象类不能被实例化,实例化的工作应该交由它的子类来完成,它只需要有一个引用即可。

         2、抽象方法必须由子类来进行重写。

         3、只要包含一个抽象方法的抽象类,该方法必须要定义成抽象类,不管是否还包含有其他方法。

         4、抽象类中可以包含具体的方法,当然也可以不包含抽象方法。

         5、子类中的抽象方法不能与父类的抽象方法同名。

         6、abstract不能与final并列修饰同一个类。

         7、abstract 不能与private、static、final或native并列修饰同一个方法。、

      实例:

      定义一个抽象动物类Animal,提供抽象方法叫cry(),猫、狗都是动物类的子类,由于cry()为抽象方法,所以Cat、Dog必须要实现cry()方法。如下:

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. public abstract class Animal {  
  2.     public abstract void cry();  
  3. }  
  4.   
  5. public class Cat extends Animal{  
  6.   
  7.     @Override  
  8.     public void cry() {  
  9.         System.out.println("猫叫:喵喵...");  
  10.     }  
  11. }  
  12.   
  13. public class Dog extends Animal{  
  14.   
  15.     @Override  
  16.     public void cry() {  
  17.         System.out.println("狗叫:汪汪...");  
  18.     }  
  19.   
  20. }  
  21.   
  22. public class Test {  
  23.   
  24.     public static void main(String[] args) {  
  25.         Animal a1 = new Cat();  
  26.         Animal a2 = new Dog();  
  27.           
  28.         a1.cry();  
  29.         a2.cry();  
  30.     }  
  31. }  
  32.   
  33. --------------------------------------------------------------------  
  34. Output:  
  35. 猫叫:喵喵...  
  36. 狗叫:汪汪...  


      创建抽象类和抽象方法非常有用,因为他们可以使类的抽象性明确起来,并告诉用户和编译器打算怎样使用他们.抽象类还是有用的重构器,因为它们使我们可以很容易地将公共方法沿着继承层次结构向上移动。(From:Think in java )


      二、接口

      接口是一种比抽象类更加抽象的“类”。这里给“类”加引号是我找不到更好的词来表示,但是我们要明确一点就是,接口本身就不是类,从我们不能实例化一个接口就可以看出。如new Runnable();肯定是错误的,我们只能new它的实现类。

      接口是用来建立类与类之间的协议,它所提供的只是一种形式,而没有具体的实现。同时实现该接口的实现类必须要实现该接口的所有方法,通过使用implements关键字,他表示该类在遵循某个或某组特定的接口,同时也表示着“interface只是它的外貌,但是现在需要声明它是如何工作的”。

      接口是抽象类的延伸,java了保证数据安全是不能多重继承的,也就是说继承只能存在一个父类,但是接口不同,一个类可以同时实现多个接口,不管这些接口之间有没有关系,所以接口弥补了抽象类不能多重继承的缺陷,但是推荐继承和接口共同使用,因为这样既可以保证数据安全性又可以实现多重继承。

      在使用接口过程中需要注意如下几个问题:

         1、个Interface的方所有法访问权限自动被声明为public。确切的说只能为public,当然你可以显示的声明为protected、private,但是编译会出错!

         2、接口中可以定义“成员变量”,或者说是不可变的常量,因为接口中的“成员变量”会自动变为为public static final。可以通过类命名直接访问:ImplementClass.name。

         3、接口中不存在实现的方法。

         4、实现接口的非抽象类必须要实现该接口的所有方法。抽象类可以不用实现。

         5、不能使用new操作符实例化一个接口,但可以声明一个接口变量,该变量必须引用(refer to)一个实现该接口的类的对象。可以使用 instanceof 检查一个对象是否实现了某个特定的接口。例如:if(anObject instanceof Comparable){}。

         6、在实现多接口的时候一定要避免方法名的重复。


      三、抽象类与接口的区别

      尽管抽象类和接口之间存在较大的相同点,甚至有时候还可以互换,但这样并不能弥补他们之间的差异之处。下面将从语法层次和设计层次两个方面对抽象类和接口进行阐述。

      3.1语法层次

      在语法层次,java语言对于抽象类和接口分别给出了不同的定义。下面已Demo类来说明他们之间的不同之处。

      使用抽象类来实现:

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. public abstract class Demo {  
  2.     abstract void method1();  
  3.       
  4.       
  5.     void method2(){  
  6.         //实现  
  7.     }  
  8. }  

        使用接口来实现

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. interface Demo {  
  2.     void method1();  
  3.     void method2();  
  4. }  

        抽象类方式中,抽象类可以拥有任意范围的成员数据,同时也可以拥有自己的非抽象方法,但是接口方式中,它仅能够有静态、不能修改的成员数据(但是我们一般是不会在接口中使用成员数据),同时它所有的方法都必须是抽象的。在某种程度上来说,接口是抽象类的特殊化。

      对子类而言,它只能继承一个抽象类(这是java为了数据安全而考虑的),但是却可以实现多个接口。

      3.2设计层次

      上面只是从语法层次和编程角度来区分它们之间的关系,这些都是低层次的,要真正使用好抽象类和接口,我们就必须要从较高层次来区分了。只有从设计理念的角度才能看出它们的本质所在。一般来说他们存在如下三个不同点:

      1、 抽象层次不同。抽象类是对类抽象,而接口是对行为的抽象。抽象类是对整个类整体进行抽象,包括属性、行为,但是接口却是对类局部(行为)进行抽象。

      2、 跨域不同。抽象类所跨域的是具有相似特点的类,而接口却可以跨域不同的类。我们知道抽象类是从子类中发现公共部分,然后泛化成抽象类,子类继承该父类即可,但是接口不同。实现它的子类可以不存在任何关系,共同之处。例如猫、狗可以抽象成一个动物类抽象类,具备叫的方法。鸟、飞机可以实现飞Fly接口,具备飞的行为,这里我们总不能将鸟、飞机共用一个父类吧!所以说抽象类所体现的是一种继承关系,要想使得继承关系合理,父类和派生类之间必须存在"is-a" 关系,即父类和派生类在概念本质上应该是相同的。对于接口则不然,并不要求接口的实现者和接口定义在概念本质上是一致的, 仅仅是实现了接口定义的契约而已。

      3、 设计层次不同。对于抽象类而言,它是自下而上来设计的,我们要先知道子类才能抽象出父类,而接口则不同,它根本就不需要知道子类的存在,只需要定义一个规则即可,至于什么子类、什么时候怎么实现它一概不知。比如我们只有一个猫类在这里,如果你这是就抽象成一个动物类,是不是设计有点儿过度?我们起码要有两个动物类,猫、狗在这里,我们在抽象他们的共同点形成动物抽象类吧!所以说抽象类往往都是通过重构而来的!但是接口就不同,比如说飞,我们根本就不知道会有什么东西来实现这个飞接口,怎么实现也不得而知,我们要做的就是事前定义好飞的行为接口。所以说抽象类是自底向上抽象而来的,接口是自顶向下设计出来的。

      (上面纯属个人见解,如有出入、错误之处,望各位指点!!!!)

      为了更好的阐述他们之间的区别,下面将使用一个例子来说明。该例子引自:http://blog.youkuaiyun.com/ttgjz/article/details/2960451

      我们有一个Door的抽象概念,它具备两个行为open()和close(),此时我们可以定义通过抽象类和接口来定义这个抽象概念:

      抽象类:

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. abstract class Door{  
  2.     abstract void open();  
  3.     abstract void close();  
  4. }  

      接口

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. interface Door{  
  2.     void open();  
  3.     void close();  
  4. }  

        至于其他的具体类可以通过使用extends使用抽象类方式定义Door或者Implements使用接口方式定义Door,这里发现两者并没有什么很大的差异。

      但是现在如果我们需要门具有报警的功能,那么该如何实现呢?

      解决方案一:给Door增加一个报警方法:clarm();

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. abstract class Door{  
  2.     abstract void open();  
  3.     abstract void close();  
  4.     abstract void alarm();  
  5. }  

        或者

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. interface Door{  
  2.     void open();  
  3.     void close();  
  4.     void alarm();  
  5. }  

        这种方法违反了面向对象设计中的一个核心原则 ISP (Interface Segregation Principle)—见批注,在Door的定义中把Door概念本身固有的行为方法和另外一个概念"报警器"的行为方 法混在了一起。这样引起的一个问题是那些仅仅依赖于Door这个概念的模块会因为"报警器"这个概念的改变而改变,反之依然。

      解决方案二

      既然open()、close()和alarm()属于两个不同的概念,那么我们依据ISP原则将它们分开定义在两个代表两个不同概念的抽象类里面,定义的方式有三种:

       1、两个都使用抽象类来定义。

      2、两个都使用接口来定义。

      3、一个使用抽象类定义,一个是用接口定义。

      由于java不支持多继承所以第一种是不可行的。后面两种都是可行的,但是选择何种就反映了你对问题域本质的理解。

      如果选择第二种都是接口来定义,那么就反映了两个问题:1、我们可能没有理解清楚问题域,AlarmDoor在概念本质上到底是门还报警器。2、如果我们对问题域的理解没有问题,比如我们在分析时确定了AlarmDoor在本质上概念是一致的,那么我们在设计时就没有正确的反映出我们的设计意图。因为你使用了两个接口来进行定义,他们概念的定义并不能够反映上述含义。

     第三种,如果我们对问题域的理解是这样的:AlarmDoor本质上Door,但同时它也拥有报警的行为功能,这个时候我们使用第三种方案恰好可以阐述我们的设计意图。AlarmDoor本质是们,所以对于这个概念我们使用抽象类来定义,同时AlarmDoor具备报警功能,说明它能够完成报警概念中定义的行为功能,所以alarm可以使用接口来进行定义。如下:

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. abstract class Door{  
  2.     abstract void open();  
  3.     abstract void close();  
  4. }  
  5.   
  6. interface Alarm{  
  7.     void alarm();  
  8. }  
  9.   
  10. class AlarmDoor extends Door implements Alarm{  
  11.     void open(){}  
  12.     void close(){}  
  13.     void alarm(){}  
  14. }  

        这种实现方式基本上能够明确的反映出我们对于问题领域的理解,正确的揭示我们的设计意图。其实抽象类表示的是"is-a"关系,接口表示的是"like-a"关系,大家在选择时可以作为一个依据,当然这是建立在对问题领域的理解上的,比如:如果我们认为AlarmDoor在概念本质上是报警器,同时又具有Door的功能,那么上述的定义方式就要反过来了。

      批注:

   ISP(Interface Segregation Principle):面向对象的一个核心原则。它表明使用多个专门的接口比使用单一的总接口要好。

   一个类对另外一个类的依赖性应当是建立在最小的接口上的。

   一个接口代表一个角色,不应当将不同的角色都交给一个接口。没有关系的接口合并在一起,形成一个臃肿的大接口,这是对角色和接口的污染。

      

      四、总结

      1、 抽象类在java语言中所表示的是一种继承关系,一个子类只能存在一个父类,但是可以存在多个接口。

      2、 在抽象类中可以拥有自己的成员变量和非抽象类方法,但是接口中只能存在静态的不可变的成员数据(不过一般都不在接口中定义成员数据),而且它的所有方法都是抽象的。

      3、抽象类和接口所反映的设计理念是不同的,抽象类所代表的是“is-a”的关系,而接口所代表的是“like-a”的关系。

      抽象类和接口是java语言中两种不同的抽象概念,他们的存在对多态提供了非常好的支持,虽然他们之间存在很大的相似性。但是对于他们的选择往往反应了您对问题域的理解。只有对问题域的本质有良好的理解,才能做出正确、合理的设计。


转载:http://blog.youkuaiyun.com/chenssy/article/details/12858267


qupath再度更新:使用WSInfer进行深度学习 我们在下面提供了一个示例,说明如何使用 WSInfer 创建 WSI 中肿瘤和肿瘤浸润淋巴细胞 (TIL) 的空间图谱,这些图谱被认为在几种癌症中既有预后又有预测意义6,10,11,12.由于 WSI 非常大,因此它们通常被分解为补丁,以使分析变得可行。补丁分类的输出通常是空间分类地图,通常可以跨 WSI 集成,以创建表示该幻灯片的诊断、预测或“分数”的单个输出。在当前的实施中,我们专注于斑块分类的通用任务,该任务广泛用于广泛的病理学应用,具有促进诊断、预后或预测功能的深度学习模型。 阅读详情

相关推荐

高效低功耗设计:PMOS电子开关在墨水屏与ADC采样电路中的创新应用

本文深入探讨了PMOS电子开关在低功耗设计中的创新应用,特别是在墨水屏和ADC采样电路中的关键作用。通过详细分析PMOS的导通机制和近乎零静态功耗特性,展示了其在待机低功耗场景下的显著优势,并提供了实用的电路设计技巧和元器件选型建议,帮助工程师实现极致的功耗优化。

weixin_29193359的博客 161

抽象类【详细】

About Me 欢迎各位读者访问,大家一起学习。 优秀是一种习惯♡♡♡ 做更好的自己! 本人见识有限,写到博客难免有错误或疏忽的地方,还望各位大佬多多指点,在此表示感激不尽。♡♡♡ 一:抽象类 1. 什么是抽象类? 类和类之间具有共同特征,将这些共同特征抽取出来,形成的就是抽象类。 如果一个类没有足够的信息来描述一个具体的对象,这个类就是抽象类。 因为类本身就是不存在的,所以抽象类无法创建对象,也就是无法实例化。 ​ 问题:既然抽象类是无法创建对象,无法实例化,那是用来干嘛的??? 抽.

qhl0930的博客 1万+

保姆级教程:用Unity为麒麟系统打包Linux应用(含路径权限全攻略)

本文提供了一份详细的Unity跨平台开发指南,重点介绍如何在麒麟系统上打包和部署Linux应用。从开发环境配置、路径权限处理到性能优化和常见问题解决,全面解析了Unity项目在国产操作系统上的适配流程,帮助开发者高效完成跨平台应用开发。

weixin_28692867的博客 504

抽象类-Abstract

一、什么是抽象 假设你的公司要进行招聘,招聘2名产品经理,10名程序员,现在让你和小A设计这个网站让报名人员填写基本信息。大概有两种设计方式----。 小A的设计方法: 但是我们发现这两个页面基本上内容是相同的,于是你的设计方法是这样的: 我们将一些相同的信息都提取到一起我们把这个过程叫做----抽象 二、抽象类 在上边的案例当中我们会发现虽然我们可以抽取一些共性,但是他们每个都有各自的一些实现方式,比如程序员和产品经理他们都要工作但是他们的工作内容不同,也就是说我们只能抽取共性,但

博客 8327

FPGA工程师必看:JESD204B同步机制实战指南(含SYSREF信号调试技巧)

本文为FPGA工程师提供了一份JESD204B同步机制的实战指南,重点聚焦于SYSREF信号的调试技巧。文章从同步的核心逻辑出发,深入剖析了时钟、SYSREF与对齐序列这“三驾马车”的协作,并详细阐述了硬件PCB布局、FPGA IP核配置、状态机监控以及使用示波器进行波形分析等关键实战步骤,旨在帮助工程师解决多通道高速系统中的同步难题,确保链路的稳定与确定性延迟。

weixin_29239661的博客 330

R语言中的summarise函数和mutate函数用于计算分组占比。下面是关于这两个函数的详细介绍以及相应的源代码示例:

R语言中的summarise函数和mutate函数用于计算分组占比。

CodeByte的博客 1182

Java抽象类和接口的详细区别(全)

这两者经常在笔试以及面试中经常问及,甚至在项目实战中还在纠结用哪一种类型今天就此问题详细剖析一下以往我的文章中也有稍微提及:java框架零基础从入门到精通的学习路线(超全)此处将其这些文章抽离公共部分,详细总结下这两概念此处的总结偏向于两者概念的总结,将其制作成表格抽象类是半抽象的,有构造方法,只允许出现常量和抽象方法。类和类之间只能单继承,一个抽象类只能继承一个类(单继承)。接口是完全抽象的,没有构造方法,接口和接口之间支持多继承,一个类可以同时实现多个接口比较内容抽象类。

码农研究僧的博客 2万+

Google Earth Engine(GEE)——全球影像数据正确下载方式和注意事项

今天看到有人担心全球影像能不能下载的问题? 有时候我们会用到全球的数据,但是如何下载全球的数据呢? 首先如果没有全球的矢量边界我们会不会无法下载全球的数据,答案当然是可以的,因为我们在边界筛选的过程中filterBounds(),就是为了筛选边界,当我们不进行边界筛选的时候,自然而然默认的边界范围就是全球的,但是紧接着会面临其他两个问题:1如何下载?2如何在不缩小分辨率的情况下下载成功? 对于第一个问题我们如何下载?还是按照正常的逻辑利用export直接倒出到Google硬盘当中, 代码:

此星光明博客 3770

抽象类的详解

抽象类的详解

weixin_55079859的博客 7251

SpringBoot 系列教程(二):SpringBoot使用Devtools实现热部署

1.devtools   spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用。 2.项目搭建   本文是采用IDEA搭建的Spring Boot应用,通过spring-boot-devtools配置,可以支持修改java文件会自动重启程序,一些资源无需触发重启,...

Thinkingcao的专栏 1215

第4章-07-将WebDriver获取的Cookie传递给Requests

在使用Selenium WebDriver获取了浏览器的Cookies之后,你可以将这些Cookies传递给requests库,以便在后续的HTTP请求中使用这些Cookies。这样做可以让你模拟浏览器会话,使得请求看起来像是从之前使用Selenium WebDriver控制的浏览器发出的。

黑夜开发者的博客 691

我是如何理解Java抽象类和接口的

在面试中我们经常被问到:Java中抽象类和接口的区别是什么? 然后,我们就大说一通抽象类可以有方法,接口不能有实际的方法啦;一个类只能继承一个抽象类,却可以继承多个接口啦,balabala一大堆,就好像把标准答案熟练的说出来一样。 抽象类和接口这篇文章讲到了他们的区别和联系,它们确实有很多相似的地方,但是从本质上看,或从语言的设计角度来看,这不是它们最本质的区别。 不卖关子,我个

Java干货 947

6、线性时序逻辑到确定性自动机的翻译

本博文详细介绍了将线性时序逻辑(LTL)转化为确定性自动机的理论基础、技术方法和实际应用。内容涵盖LTL的基本运算符、确定性自动机的特点及其在模型检测中的作用,以及具体的翻译步骤与优化策略。通过实际案例展示了如何利用这一技术进行系统属性验证,并探讨了翻译过程中可能遇到的挑战及解决方案。

gpu4optimizer的博客 149

由浅入深理解抽象类和接口

抽象类抽象类的定义所谓抽象类,是指对某一个类的整体或根源的抽象描述,包括方法和属性。对抽象类的理解 对于抽象类,一般继承的类与被继承的类之间的关系是“is a”的关系,表示被继承的类属于继承类的一部分; 抽象类是不能被实例化; 抽象类中可以有成员变量、抽象方法、构造函数、实体方法,并且抽象方法一般是由protected修饰的; 抽象方法名和抽象类名前必须使用abstract修饰; 抽象类存在的意义在

Cecilia 932

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

如何理解java抽象类,我是如何理解Java抽象类和接口的

原标题:我是如何理解Java抽象类和接口的在面试中我们经常被问到:Java中抽象类和接口的区别是什么?然后,我们就大说一通抽象类可以有方法,接口不能有实际的方法啦;一个类只能继承一个抽象类,却可以继承多个接口啦,balabala一大堆,就好像把标准答案熟练的说出来一样。抽象类和接口这篇文章讲到了他们的区别和联系,它们确实有很多相似的地方,但是从本质上看,或从语言的设计角度来看,这不是它们最本质的区...

weixin_39662432的博客 137

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

理解接口和抽象类

理解接口和抽象类 对面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。今天我们就一起来学习一下Java中的接口和抽象类。 一、抽象类 在了解抽象类之前,先来了解一下抽象方法。抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。抽象方法的声明格式为: abstract void fun(); [public] abstract class C

weixin_42540869的博客 177

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

抽象类和接口理解

一.抽象类 1.1 定义 抽象类:类是一个具有相同特征和行为的抽象,而抽象类(class 前加上 abstract)没有指出行为的具体细节,而由他的子类去实现相应的行为。 把普通类前面加一个abstract关键字就是抽象类。 1.2抽象类的特征 1、不能创建一个抽象类的实例。(//Father f = new Father();Father是父类) 2、通过在类定义前面放置关键字 sealed,可以将类声明为密封类。当一个类被声明为 sealed 时,它不能被继承。抽象类不能被声明为 ...

wan37的博客 231

理解接口和抽象类的关系

接口可以继承多个接口,但是不能继承类(普通类、抽象均不可)-其实这个接口继承类的说法就不对,接口是对行为的抽象,抽象类是对类的抽象,两都不能混在一起看,所以你想用接口去继承类,那感觉就是喝葡萄酒加雪碧。1、接口中的方法都是抽象方法,抽象类中的方法可以为抽象的,也可以为非抽象的(抽象方法一定要放在抽象类中,但抽象类中不一定含有抽象方法)。普通类继承和实现接口的时候,必须把他们的方法全部实现,如果不全部实现,那么自己会变能abstract类,即抽象类。3、类与类之间是继承关系,类与接口之间是实现关系。...

m0_61902970的博客 1578

你真的理解Java的接口和抽象类吗?

深入理解Java的接口和抽象类抽象类与接口的概念引言1.抽象类2.接口3.抽象类和接口的区别3.选择使用接口和抽象类的依据是什么? 抽象类与接口的概念 引言 今天下午看了一节课,看到结束时感觉越看越迷惑,越想越乱(脑子不够使),看了几篇文章后有了头绪,下面整理一下。 package C_4; /** * @author: Gino * @Data: 2020年7月5日下午7:04:05 * @File_Name: Interface_Demo2.java * */ class Peo{ p

清风阁 1735

我对抽象类和接口的理解

今天公司组织培训。讲解到抽象类和接口这里的时候。好像有同事不太明白。(请允许我自作多情一下!)   鉴于我自己对这部分也不是掌握的很透彻。所以发个博文上来,一是记录一下。二是希望还不明白的朋友在阅读完本文之后能有个了解。   新手,如有不当之处,请多多包涵!   MSDN:抽象类是从子类发现了公共的东西,泛化(也可以说把公共的东西单独提取出来)出父类,然后子类继承父类,而接口是根

aa7251836的专栏 1049

一篇文章让你彻底理解java中抽象类和接口

相信大家都有这种感觉:抽象类与接口这两者有太多相似的地方,又有太多不同的地方。往往这二者可以让初学者摸不着头脑,无论是在实际编程的时候,还是在面试的时候,抽象类与接口都显得格外重要!希望看完这篇博客文章各位都能从容地明了二者… @[toc] 1、我所理解的抽象类 1、1 抽象类和类的相样韵味 1、抽象类和类一样,都是可以用来继承的 2、类可以有的成分,抽象类都可以拥有【包括构造方法、static静...

wanghao112956的博客 156

如何理解抽象java_我如何理解Java中抽象类和接口

在面试中我们经常被问到:Java中抽象类和接口的区别是什么?然后,我们就大说一通抽象类可以有方法,接口不能有实际的方法啦;一个类只能继承一个抽象类,却可以继承多个接口啦,balabala一大堆,就好像把标准答案熟练的说出来一样。抽象类和接口这篇文章讲到了他们的区别和联系,它们确实有很多相似的地方,但是从本质上看,或从语言的设计角度来看,这不是它们最本质的区别。不卖关子,我个人对这两个的理解:类是具...

weixin_39656174的博客 170

接口和抽象类的理解1

接口类似契约(合同),既然是契约(合同)必然有合同双方接口的几个要素:1提供者(甲方)2使用者(乙方)3 接口(合同)4 目的 (原因)接口的制定者 多数为甲方,少数为甲乙双方共同约定,决不会是乙方单独制定。比如要实现foreach迭代,类就必须继承IEnumerable 和 IEnumerator 接口,这样类必须有 GetEnumerator、MoveNext、Reset 和 Cu

懒虫的专栏 643

对Java抽象类和接口的理解

  抽象是面向对象中的重要概念,从逻辑上来说,抽象的定义来源于对于很多东西,它们并不能代表具体的事物,这类东西只是一个概念。没有一个具体的实体与之相应。所以我们只能将其定义为抽象的。 在java中,抽象类用来定义那些无法具体实现的东西,比如说动物和植物,它们是一个概念,是一种代表,却没有具体的属性和方法。所以我们就用abstract来修饰它们,他们是虚拟的,但是又是不可缺少的。它们是所有动物和...

qq_35589080的博客 467
上一篇: JNI搭建:native方法注册或NDK中的方法对应
下一篇: Android屏幕适配解析
panfengsoftware
博客等级 码龄20年 38粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值