Java中的抽象类,什么是抽象java

  Java中的抽象类,什么是抽象java

  00-1010抽象类1。派生抽象类2。了解抽象类接口1。抽象类和接口2的区别。知道接口3。实现USB接口的接口表示能力。

  

目录

 

  00-1010向上改造最大的好处就是参数的统一。通过使用一个公共的父类引用,您可以接收所有的子类。

  多态性非常依赖于方法重写,但是子类可以有选择地重写父类的方法。如果有必要强制子类重写方法,将使用抽象类。其实说明生活中有很多抽象类。这些类都是概念性的,不能特定于一个实例,但是可以描述这类对象的通用属性和方法,比如人,不能特定于某一类人。世界上有很多种人,中国人,美国人等等。这种人,,

  

抽象类

概念:

 

  Class:由abstract声明的类。抽象类是普通类的“超集”,有一些普通类和抽象类,但只有一些抽象方法。抽象方法所在的类必须是抽象的。如果一个子类继承了一个抽象类,它必须覆盖其父类的所有抽象方法。这里的子类是普通的类,必须重写所有的抽象方法。但是,如果子类也是抽象类,就没必要了。

  abstract关键字

  在Java中,abstract关键字用于定义抽象方法或抽象类。1.抽象方法所在的类必须声明为使用abstract绘制的类。抽象方法是指使用抽象声明、只使用函数声明、不使用方法体(“{}”)的方法。

  但是,在Java中,说没有方法体的方法是抽象方法是错误的,因为在Java中,本地方法native()没有方法体,但不是抽象方法。

  本地方法,不是抽象方法,是JVM实现的,JVM是c写的,本地方法是指调用C. 2中同名的方法。如果使用abstract将一个类声明为抽象类,那么它不能通过该类直接生成对象,即使该类中没有抽象方法。当一个类是抽象类的时候,不管有没有抽象方法,类本身就是一个抽象的概念,不能具体到一个具体的实例,只能通过子类向上转型变为抽象父类的引用.

  人类抽象:

  Person per=new Person();//error person per=new China();//好的

  在IDEA中抽象类和普通类的图标也是不一样的:

  3.如果一个子类继承了一个抽象类,那么就需要强制该子类覆盖抽象类中的所有抽象方法(除了该子类是抽象类之外),同时还要满足单继承限制。一个子类只能继承一个抽象类。

  如果B覆盖了A的抽象方法,那么C可以避免覆盖A的抽象方法;如果B不重写A的抽象方法,那么C将重写A和B的所有抽象方法。

  4.抽象类是普通类的超集(普通类和所有抽象类都有一些内容),但只是比普通类多了一些抽象方法,很难画出来。

  虽然一个类不能直接实例化一个对象,但是它也可以有一个构造函数。子类实例化一个对象时,默认也是调用父类(抽象类)的构造函数,然后调用子类的构造函数。

  如果一个需求可以同时使用抽象类和接口,我们更倾向于接口,因为抽象类仍然受到单一继承的限制,而一个类可以实现多个接口。

  

1.引出抽象类

 

  00-10101.抽象类:抽象类不能直接实例化对象,但是子类仍然满足是一个原则,子类和抽象父类的关系仍然满足“继承树”。Person对于ChinaSharp和Cycle来说,抽象类只有满足继承树的关系才能使用,有局限性,抽象类有单一继承限制。子类只能继承抽象父类2.接口:接口中只有抽象方法和全局常量,除此之外别无它物。这是一个比抽象类更纯粹的抽象概念。实现一个接口时,是混合关系,不需要满足is a关系。只要子类有这个能力或者行为,就可以继承接口,一个子类可以继承多个接口。

  

2.认识抽象类

概念:

 

  使用interface关键字interface声明,子类使用impl。

  ements实现接口,接口中只有抽象方法和全局常量,其他的统统没有,普通方法和构造方法等等,在接口里全部都没有

  接口表示的场景:

  一般来说,接口的使用表示两种场景1.接口表示具备某种能力/行为,子类实现接口时,不是is a 关系,而是具备这种行为或者能力游泳 – > 能力或者行为Person满足游泳接口Dog 也满足游泳接口Duck也满足游泳接口2.接口表示一种规范或者标准,USB接口,5G标准

  

 

  

3.具体实现

 

  

USB接口

使用interface声明一个USB接口,USB接口表示一种规范,只要满足USB接口这个规范都可以实现这个接口,鼠标,键盘,摄像头,打印机,这些都满足USB接口的规范(都有USB插口)

 

  

 

  子类使用implements实现接口,必须覆写所有的抽象方法

  

 

  而电脑这个类不是USB接口的子类,电脑叫做USB规范的使用者,所有带有USB线插入到电脑的设备都应该满足USB的规范

  

 

  对于电脑的生产者来说,根本不需要关心到底哪个具体的设备插入到电脑中,只要这个设备满足了USB接口,就能够被电脑识别,就可以实现一个接口可以接收无数种设备,只要这个设备满足USB接口,都可以插入到电脑且被电脑识别。如果fun(Mouse mouse) — > 这个插口只能识别鼠标,其他设备都识别不了,那么电脑想接收其他设备,电脑上就得有该设备独有插口,很多种设备,那电脑上就全是接口了,所有这就是接口表示一种规范的带来的方便,只需要一个插口,只要满足USB插口的规范,就可以被电脑接收识别

  

 

  此时不管扩展多少个设备,fun方法一行代码都不会变开闭原则:程序对扩展开放,对修改关闭,这是所有设计模式的核心思想

  

 

  

接口表示能力

接口允许多实现,一个类可以具备多种能力,同时实现多个父接口,若子类是普通类,需要覆写所有的抽象方法

 

  

 

  子类同时实现多个父接口,中间使用 , 分隔

  

 

  由于接口中只有抽象方法和全局常量,所以接口中public abstract – >抽象方法sattic final – >常量这些关键字全都可以省略不写,只用保留最核心的方法返回值,方法参数列表,方法名称即可

  

 

  到此这篇关于一文详解Java抽象类到底有多抽象的文章就介绍到这了,更多相关Java抽象类内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: