j***a语言设计抽象,j***a抽象类设计
kodinid
15
大家好,今天小编关注到一个比较有意思的话题,就是关于java语言设计抽象的问题,于是小编就整理了5个相关介绍Java语言设计抽象的解答,让一起看看吧。
- java中抽象类可以被实例化吗?
- Java接口和抽象类的区别?
- JAVA问题,父类为抽象类,子类继承父类后,为什么还要把抽象类的方法重写?那为什么不直接创建个方法?
- 抽象方法body部分必须大括号吗?
- Java教程里抽象类的意义是什么?如何使用抽象类?
我们可以明确告诉你,J***a中的抽象类不可被实例化。
因为抽象类的目的跟接口是一样的,将某一些类的共有操作抽取,从而提高代码的重用,减少代码冗余。只不过抽象类相对于接口而言,可以拥有自己的非抽象成员罢了。
当然,抽象类虽然不能被实例化,但却有构造器,这里我们需要明白一点,构造器是用来在对象实例化时进行一些初始化操作,而不是通过调用构造器来对象进行实例化。而抽象类中构造器的作用仅仅是为了让子类在初始化的时候可以调用其构造器来对自己进行初始化。
说这么多,估计很多人还是一头雾水,我写个例子我想应该就有很多人明白了。
抽象类:狗类
(图片来源网络,侵删)
实体类:金毛
测试类一:直接实例化抽象类
J***a接口和抽象类的区别?
一、J***a接口和抽象类的相同点
(1)都不能被实例化。
(2)接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法后才能实例化。
二、J***a接口和抽象类的不同点
(1)接口只有定义,不能有方法的实现,j***a 1.8中可以定义default方法体,而抽象类可以有定义与实现,方法可在抽象类中实现。
(2)实现接口的关键字为implements,继承抽象类的关键字为extends。一个类可以实现多个接口,但一个类只能继承一个抽象类。所以,使用接口可以间接地实现多重继承。
(3)接口强调特定功能的实现,而抽象类强调所属关系。
(4)接口成员变量默认为public static final,必须赋初值,不能被修改;其所有的成员方法都是public、abstract的。抽象类中成员变量默认default,可在子类中被重新定义,也可被重新赋值;抽象方法被abstract修饰,不能被private、static、synchronized和native等修饰,必须以分号结尾,不带花括号。
J***A问题,父类为抽象类,子类继承父类后,为什么还要把抽象类的方法重写?那为什么不直接创建个方法?
抽象类可以没有抽象方法,也可以全部是抽象方法,如果子类继承的父类是抽象类,子类必须重写父类里所有的(是所有的)抽象方法,才能被实例化,也就是创建对象,要不然子类也将是个抽象类,抽象类不能被实例化(考试里选择题经常出现)
抽象方法body部分必须大括号吗?
声明抽象方法不可写出大括号。
1、如果写了大括号就表示这个方法已经实现了(里边有没有代码没关系)。
2、抽象方法的定义就是没有体的方法,所有抽象方法有方法体肯定是不对的。
3、因为是抽象的,所以只能在其他继承的类中实现,所以只以分号结束就行。
j***a中的抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和所需的参数,没有方法体,也就是说抽象方法只需要声明而不需要实现。
abstract int sum( int a);
J***a教程里抽象类的意义是什么?如何使用抽象类?
抽象的简单目的是为了重用;直观点就是能够少复制,甚至做到同一逻辑,在代码中仅出现一次。
抽象类用的地方比较多,如果要入手,可以看看设计模式中的模板方法模式。
需要自己动手去看看。
J***a 类库中的AbstractMap, AbstractList 等等,都可以看看,怎么变成ArrayList等。
然后特别有意思的一个地方,多线程中的AQS 框架。定义了锁的抽象
到此,以上就是小编对于j***a语言设计抽象的问题就介绍到这了,希望介绍关于j***a语言设计抽象的5点解答对大家有用。
标签: 抽象
方法
构造器
版权声明:本文来源于网络,不代表本站立场,如转载内容涉及版权等问题,请联系邮箱:83115484@qq.com,我们会予以删除相关文章,保证您的权利。