java接口和抽象类

abstract:抽象类和抽象方法必须使用abstract修饰符来定义,有抽象方法的类只能被定义成抽象类,抽象类里可以没有抽象方法。
抽象类和抽象方法的规则如下:
A:抽象类必须使用abstract修饰符修饰,抽象方法也必须使用abstract修饰,抽象方法不能有方法体。
B:抽象类不能被实例化,无法使用new关键字来调用抽象类的构造器来创建抽象类的实例。即使这个抽象类里不包含抽象方法,这个抽象类也不能创建实例。
C:抽象类可以包含属性、方法(普通的方法和抽象方法都可以)、构造器、初始化块、内部类、枚举类六种成分。抽象类的构造器不能创建实例,主要作用是用于被子类调用。
D:包含抽象方法的类(直接定义一个抽象方法;继承了一个抽象父类,但没有完全实现父类包含的抽象方法;以及实现了一个接口,但没有完全实现接口包含的方法)只能被
    定义成抽象类。
    
抽象方法和空方法体的方法不是同一个概念。例如public abstract void test();是一个抽象方法,它根本没有方法体,即方法定义后面没有花括号;但是public void test(){};
是一个普通方法,它已经定义了方法体,只是方法体为空,因此这个方法不能用abstract修饰。

抽象类不能创建实例,只能被当做父类被其他子类调用。
抽象类是从多个具体类抽象出来的父类,它具有更高层次的抽象。
从多个具有相同特性(圆、三角形、多边形等具有周长和面积)的子类中抽象出一个抽象类,以这个抽象类作为子类的模板,从而避免子类设计的随意性。

=============================================++++++++++++++++++++++++++++++++++
接口:
抽象类是从多个子类中抽象出来的模板,如果将这种抽象进行的更彻底,则可以提炼出一种更加特殊的“抽象类”——接口(interface),接口不能包括普通方法
接口里所有方法都是抽象方法。
接口的定义:使用interface关键字,
【修饰符】 interface 接口名 extends 父接口1,父接口2...{
    零个到多个常量
    零个到多个抽象方法定义
}
A:修饰符可以public或者省略,如果省略了修饰符,则默认采用包下面的访问控制修饰符。
B:接口名与类名命名规范相同;如果遵守java可读性规范,则接口有多个有意义的单词连缀而成,每个单词首字母大写,单词与单词无任何分割。
C:一个接口可以有多个直接父接口,接口只能继承接口,不能继承类。
一个接口可以继承多个父接口。
由于接口定义的是一种规范,因此接口里不能包含构造器和初始化块定义,接口里可以包含的属性(只能是常量)、方法(只能是抽象实例方法)、内部类(内部接口)和枚举类。
+++++++++++++++++++
一个类可以实现一个或多个接口,继承使用extends关键字,实现使用implements关键字。因此一个类可以实现多个接口
【修饰符】 class 类名 extends 父类 implements 接口1,接口2...
{
    类体部分
}

++++++++++=============+++++++++++++++++++================
接口和抽象类的特征:
相同:A:接口和抽象类都不能被实例化,它们都位于继承书的顶端,用于被其他类实现和继承。
B:接口和抽象类都可以包含抽象方法,实现接口或继承抽象类的普通子类,必须实现接口或抽象类的所有抽象方法。

接口作为系统和外界交互的窗口,接口体现了一中规范。对于接口的实现者而言,接口规定了实现者必须向外提供哪些服务(以方法的形式提供);
对于接口的调用者而言,接口规定了调用者可以调用哪些服务,以及如何调用这些服务(如何调用方法)。当在一个程序中使用接口时,接口是多程序的通信标准。

抽象类则不同,抽象类作为多个子类的共同父类,它体现了一种模板式设计。抽象父类作为多个子类的抽象父类,可以被当做系统程序实现的中间产品,这个中间产品已经实现了
系统的部分功能,必须有更进一步的完善。

----------------------------------------------
除此,接口和抽象类有以下区别
1:接口里只能保护抽象方法,不能包含已经实现的方法;抽象类可以包含普通方法。
2:接口里不能定义静态方法;抽象类里可以定义静态方法。
3:接口只能定义常量;抽象类可以定义普通属性,已可以定义静态的常量属性。
4:接口不包含构造器;抽象类可以包含构造器,构造器并不是用于创建对象,而是让子类调用这些构造器来完成抽象类的初始化操作。
5:接口里不能包含初始化块;抽象类可以。
6:一个类最多只能有一个父类(包括抽象类);但一个类可以实现多个接口,通过实现多个接口可以弥补java单继承的不足。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值