抽象类
修饰符abstract
package com.kuang.oop.Demo10;
//抽象类
public abstract class Action {
//抽象方法,只有方法名,没有具体实现;通过子类实现
public abstract void run();
//正常方法
public void speak(){
System.out.println("speak");
}
}
==========================================================
public class Run extends Action{
//子类继承抽象类,需要实现其抽象方法
@Override
public void run() {
System.out.println("run");
}
}
注意
- 抽象类只是一种约束,不能通过new来实例化,需要通过子类实现它
- 抽象类中可以写普通方法
- 抽象方法必须写在抽象类中,子类继承抽象类时,必须实现父类的抽象方法
- 类是单继承,接口可以实现多继承
接口
接口的本质
接口是一种规范,使代码的约束和具体实现相分离,提高开发效率
类和接口
- 普通类:只有具体的实现
- 抽象类:abstract,有抽象的方法,也可以有具体的实现
- 接口:interface,只有抽象的定义、规范
package com.kuang.oop.Demo10;
//关键字:interface
public interface UserService {
//接口中定义的常量默认是全局,public static final,一般不会在接口中这样使用
int AGE=10;
//接口定义的方法默认是public abstract
void speak();
void eat(String food);
}
public interface TimeService {
void time();
}
=============================================================
//接口可多继承
public class UserServiceImpl implements UserService,TimeService{
@Override
public void time() {
//具体实现
}
@Override
public void speak() {
//具体实现
}
@Override
public void eat(String food) {
//具体实现
}
}
接口总结
- 接口是抽象的约束
- 接口定义一些方法,让不同的人去实现
- 接口中定义常量,默认是public static final
- 接口中定义方法,默认是public static
- 接口没有构造器,无法被实例化
- 接口实现类,通过implements可对单个或多个接口进行实现,重写接口方法