Java抽象类和接口
(一).抽象类
1.1 抽象类的使用
① 使用abstract关键字修饰的类、方法,称为抽象类和抽象方法。
② abstract修饰类
1).使用abstract修饰一个类时,该类不能被实例化。
2).抽象类中,一定要有构造器,便于子类对象实例化时调用。
③ absract修饰方法
1).abstract修饰的方法称为抽象方法。
2).抽象方法中没有方法体,只有方法的声明。
3).使用abstract修饰的方法,必须在该类的子类中进行重写。
4).包含抽象方法的类,一定是一个抽象类。一个抽象类中不一定只有抽象方法。
5).若子类继承了抽象类后,重写了抽象类中的所有抽象方法,则该子类可以被实例化,否则该子类仍然是一个抽象类。
abstract class Person{
String name;
int age;
public Person(){
}
public Person(String name,int age) {
this.name = name;
this.age = age;
}
public void walk(){
System.out.println("人走路");
}
public void eat(){
System.out.println("人吃饭");
}
//抽象方法。
public abstract void shoot();
}
class Student extends Person{
//子类重写父类中的抽象方法
public void shoot(){
System.out.println("学生要吃有营养的食物");
}
}
1.2 注意事项
① abstract不能用来修饰属性、构造器、代码块等结构
② abstract不能用来修饰权限为private的方法。
③ abstract不能用来修饰静态方法
④ abstract不能用来修饰声明为final的方法和类。 声明为final的方法 不能被重写。声明为final的类不能被继承。
(二).接口
2.1 接口与类的关系
① 接口和类是两个并列的结构。
2.2 接口的使用
② 接口的使用:
1).使用Interface关键字来定义。
2).接口中可以定义哪些成员:
1.在JDK7及JDK7之前,接口中只能定义全局常量和抽象方法。
> 全局常量: 使用public static final修饰。
> 抽象方法:使用public abstract修饰。
2.在JD8及以后,接口中除了定义全局常量和抽象方法外,还可以定义静态方法、默认方法。
3).我们使用接口时,是通过一个类去实现这个接口来完成。
使用implements关键字,使得一个类实现这个接口,当一个类实现该接口时,接口中的抽象方法,必须在该类中进行重写。
public class Computer implements USB { //电脑类实现了USB接口
//重写接口中的方法:
public void check(){
System.out.println("检查电脑");
}
public void start(){
System.out.println("开电脑");
}
public void work(){
System.out.println("使用电脑工作");
}
public void end(){
System.out.println("关闭电脑");
}
}
// 定义一个接口
interface USB{
public abstract void check(); //接口中的抽象方法。 可以省略 public abstract不写。
void start();
void work();
void end();
}
2.3 使用接口的注意事项
③ 接口的注意事项
1). 接口不能被实例化,因为接口中不能定义构造函数。
2). 接口与接口之间可以多继承。
3). 当一个类实现某个接口时,必须重写该接口中的所有抽象方法,如果没有全部进行重写,则该类是一个抽象类。
4).类可以实现多个接口的时候继承其他的类。其格式为: class AA extends BB implements CC,DD,EE…{}
5). 子类实现接口中的抽象方法时,子类重写的方法的权限修饰符必须大于等于接口中抽象方法的权限修饰符。

被折叠的 条评论
为什么被折叠?



