1.抽象类、接口
1.抽象类
1.抽象类使用abstract修饰,它和常规类一样具有数据域、方法的构造方法,但不可以new实例;
2.抽象类中不一定有”抽象方法“,”抽象方法“必须在”抽象类‘中;
3.“非抽象类”在继承“抽象类”时,必须覆盖/实现所有的“抽象方法”,否则会违反规则2;
4.abstract与final无法联合使用,否则子类无法继承;
5.抽象类的子类可以是抽象类,这就不必实现所有抽像方法;
1. 动物类(抽象类)
abstract class Animal {
private String name;
public void setName ( String name) {
this . name= name;
}
public String getName ( ) {
return this . name;
}
8. 抽象类中不一定有抽象方法,抽象方法必须在抽象类中
父类中的抽象方法必须被子类覆盖,否则子类就会继承抽象方法,导致报错
public abstract void doSome ( ) ; 抽象方法!
public abstract void eatSome ( ) ; 抽象方法
4. abstract 与final 无法联合使用
错误:java: 非法的修饰符组合: abstract 和final
public final abstract void doSome ( ) ; 抽象方法!
}
2. 猫(非抽象类)
class Cat extends Animal {
8. 抽象类中不一定有抽象方法,抽象方法必须在抽象类中
父类中的抽象方法必须被子类覆盖,否则子类就会继承抽象方法,导致报错
注释掉doSome ( ) 后会报如下错误
java: Cat不是抽象的, 并且未覆盖Animal中的抽象方法doSome ( )
@Override
public void eatSome ( ) {
System. out. println ( super . getName ( ) + "猫吃老鼠" ) ;
}
public Cat ( ) {
}
调用父类的构造方法
public Cat ( String name) {
super . setName ( name) ;
}
}
2.接口
1.接口使用关键字interface定义,接口只包含可见性为public的常量、抽象方法等,不包含变量和具体方法;
2.不可以new创建实例;
3.接口方法不能有方法体;
4.一个非抽象的类在实现接口时,必须将接口中所有方法加以实现;
5.一个类可以实现多个接口;
6.extends和implements可以共存,extends在前,imp