普通类和抽象类有哪些区别
. 抽象类必须要有抽象方法吗?
答:不需要,
抽象类不一定有抽象方法;但是包含一个抽象方法的类一定是抽象类。(有抽象方法就是抽象类,是抽象类可以没有抽象方法)
解释:
抽象方法:
java中的抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和所需的参数,没有方法体,也就是说抽象方法只需要声明而不需要实现。
抽象方法与抽象类:
当一个方法为抽象方法时,意味着这个方法必须被子类的方法所重写,否则其子类的该方法仍然是abstract的,而这个子类也必须是抽象的,即声明为abstract。abstract抽象类不能用new实例化对象,abstract方法只允许声明不能实现。如果一个类中含有abstract方法,那么这个类必须用abstract来修饰,当然abstract类也可以没有abstract方法。 一个抽象类里面没有一个抽象方法可用来禁止产生这种类的对象。
Java中的抽象类:
abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。
在abstract class 中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在 interface中一般不定义数据成员),所有的成员方法都是abstract的。
. 普通类和抽象类有哪些区别
关键点:abstract修饰符(抽象方法)、具体实现过程、实例化、子类实现父类的抽象方法
普通类中不可含有抽象方法,可以被实例化;
抽象类,则抽象类中所有的方法自动被认为是抽象方法,没有实现过程,不可被实例化;
抽象类的子类,除非也是抽象类,否则必须实现该抽象类声明的方法
抽象类可以使用final修饰吗?
当然不可以,通过理解抽象类的作用我们就发现了,抽象类必须要被继承,如果用final修饰抽象类,这个抽象类就无法被继承,自然就无法使用了。
java中abstract类和interface的区别
相同点
两者都是抽象类,都不能实例化。
interface实现类及abstrct class的子类都必须要实现已经声明的抽象方法。
不同点
interface需要实现,要用implements,而abstract class需要继承,要用extends。
一个类可以实现多个interface,但一个类只能继承一个abstract class。
interface强调特定功能的实现,而abstractclass强调所属关系。
尽管interface实现类及abstrct class的子类都必须要实现相应的抽象方法,但实现的形式不同。interface中的每一个方法都是抽象方法,都只是声明的(declaration,没有方法体),实现类必须要实现。而abstract class的子类可以有选择地实现。
- 点赞
- 收藏
- 关注作者
评论(0)