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);
    }
}

image-20250803104509590

要点

  • 前提:父类引用指向子类的对象
  • 把子类转换为父类,向上转型,不用强转
  • 把父类转换为子类,向下转型,需要强转
  • 方便方法的调用,减少代码的重复使用,提高利用率

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() {

    }
}
posted @ 2025-08-03 16:41  神也忧伤  阅读(7)  评论(0)    收藏  举报