instanceof,抽象类和接口
Instanceof
instanceof:判断两个类之间是否有父子关系
Application.java
package OOP;
import OOP.Demo04.Person;
import OOP.Demo04.Student;
import OOP.Demo04.Teacher;
public class Application {
public static void main(String[] args) {
Object object = new Student();
System.out.println(object instanceof Person);
System.out.println(object instanceof Student);
System.out.println(object instanceof Teacher);
System.out.println(object instanceof Object);
System.out.println(object instanceof String);
}
}
要点
- 前提:父类引用指向子类的对象
- 把子类转换为父类,向上转型,不用强转
- 把父类转换为子类,向下转型,需要强转
- 方便方法的调用,减少代码的重复使用,提高利用率
Abstract 抽象类
在类前面加一个修饰符abstract
抽象方法
public abstract void something();
只有方法名,没有方法体
抽象类的所有方法,都必须由继承了它的子类来实现;除非子类也是抽象类
抽象类的特点
不能new出来,只能靠子类去实现,是一种约束
抽象类里可以有普通方法,但是抽象方法不能在普通类里定义
接口
- 接口就是规范,定义的是一组规则
- 关键词:interface
- 接口中的所有定义其实都是抽象的,public abstract
- 接口都需要实现类
- 类可以实现接口,通过关键字implements;如: 类名 implements 接口
- 实现了接口的类,必须要重写接口中所有的方法
- implements 可以实现多继承
- 接口中定义常量都是 public static final
- 接口不能被实例化,因为它没有构造方法
UserService.java
package OOP.Demo05;
public interface UserService {
//接口中所有的方法都是抽象的
void add();
void delete();
void update();
void query();
}
UserServiceImpl.java
package OOP.Demo05;
public class UserServiceImpl implements UserService {
@Override
public void add() {
}
@Override
public void delete() {
}
@Override
public void update() {
}
@Override
public void query() {
}
}

浙公网安备 33010602011771号