JAVA抽象类接口学习笔记 下载本文

内容发布更新时间 : 2024/11/18 15:21:28星期一 下面是文章的全部内容请认真阅读。

抽象类

什么是抽象类?

JAVA允许在类中只声明方法而不提供方法的实现。 这种只有声明而没有方法体的方法称为抽象方法,而包含一个或多个抽象方法的类称为抽象类。

抽象(abstract)类:

抽象类是以abstract关键字为开头的类。 抽象方法在声明中也要加上 abstract 。

abstractclass Employee{ }

//抽象类:以abstract关键字为开头的类

abstractvoidraiseSalary(); //抽象方法:只有声明而没有方法体的方法

注意:

1. 抽象类在使用上有特殊的限制,即不能创建抽象类实例。

2. 如果抽象类的子类实现了抽象方法,即可以创建该子类的实例对象,否则该子类也是抽

象类(对,没有看错),也不能创建实例。

3. So,一般将抽象类构造方法的访问权限声明为protected而不是public,从而保证这个

构造方法能由其子类调用,而不被其他无关的类调用。 关于注意点1和2的代码:

abstractclassEmployee{ }

classManagerextendsEmployee{ //抽象类的子类 }

publicstaticvoidmain(String[] args) {

}

Employee e = new Manager(); Employee e = newEmployee();

//创建Employee 子类 Manager的对象 //错误!Employee为抽象类

voidraiseSalaty(inti){ //实现抽象方法 }

System.out.println(\);

//抽象类:以abstract关键字为开头的类

abstractvoidraiseSalary(inti); //抽象方法:只有声明而没有方法体的方法

抽象类的作用

Eg.现在有 4 个类, Shape()—形状类 Circle()---圆形类 Square()---正方形类 Triangle()---三角形类 在这四个类中

Color( ) 属性定义在父类里

show( ) 方法可以定义成抽象方法

Shape 类是顶层类。*实际上Shape类的对象是没有实际意义的。* 定义Shape类的目的并不是为了在程序中创建并操作它的对象,而是为了定义几何形状类体系的通用接口,这些接口在Shape类中并不需要给出具体实现,而由它的各个子类提供自己的实现。

还有如果设计者如果想禁止创建某个类的实例对象,只需要在类的声明加abstract关键字。

抽象类的总结

抽象类:专门设计让子类继承的类 特点:

包括一个或多个抽象方法(只有方法说明,没有方法体); 如果子类不是抽象类,必须实现其父类的抽象方法; 抽象类不能被实例化(即不能直接创建对象);

抽象类不一定要包含抽象方法,若类中包含了抽象方法,则该类必须被定义为抽象类。

接口(interface)

Java的接口使抽象类的概念的更深一层。接口是一种“纯”抽象类。 接口中声明了方法,但不定义方法体。 为什么要使用接口?

类继承对于重用父类中的代码很有用,而Java只支持单继承,在遇到需要多继承的情况,可以通过接口来帮助实现

接口的定义:

“正规”的接口的定义写法: interface接口名称 {

finalstatic数据类型成员变量=值;//常量

publicabstract返回类型方法名称(参数…);//抽象方法 }

注意事项:

1. 成员变量必须为常量 2. 方法必须为抽象方法

萌新前面特意强调“正规”,让我们来看这么一段代码: interface iShape2D{

doublepi=3.14; //成员变量必须初始化

area(); //抽象方法,没有方法体 }

为什么这段代码里的接口中定义的常量没有加final,而且声明的方法也没有加abstract 因为

1. 在接口中定义的常量默认具有public,final,static的属性。(常量名通常大写)。

2. 在接口中声明的方法默认具有public和abstract属性。

另外:如果在子接口中定义了父接口同名的常量和方法,则父接口中的常量被隐藏,方法被重写。

接口的实现与使用

接口类:类的声明中用imlements子句来表示一个类实现了某个接口,在类中可以使用接口的常量,而且必须实现接口中定义的所有方法。