Java 初学 day 08

java 08

1、Abstract关键字

java为了表示现实生活中抽象的概念集合,提供了一个关键字给我们使用:abstract
abstract 抽象的
可以修饰类,修饰成员方法
1. 被abstract修饰的类是抽象类, 抽象类不能被实例化
2. 被abstract修饰的方法是抽象方法, 抽象方法不能有大括号实现
3. 在抽象类,既可以存在具体实现的方法, 也可以存在抽象方法
4. 若一个类中有抽象方法, 这个类一定是一个抽象类
5. 当一个具体的类继承一个抽象类, 必须要实现抽象类中的所有抽象方法
6. 当一个抽象类继承一个抽象类的时候, 可以选择性地是否重写抽象方法

抽象类与类中成员的关系:

成员变量: 抽象类既可以存在变量, 也可以存在常量
构造方法: 可以存在构造方法, 是为了将来在继承关系做初始化的作用
成员方法: 既可以是具体的实现方法, 也可以是抽象方法

abstract不能和哪些关键字共存

final 不能共存
static 不能共存
private 不能共存
abstract class ShuJia{
//     abstract final void fun1(); // 非法的修饰符组合: abstract和final

//    abstract static void fun1(); // 非法的修饰符组合: abstract和static

//    private abstract void fun1(); // 非法的修饰符组合: abstract和private
}

public class AbstractDemo3 {
    public static void main(String[] args) {

    }
}

抽象案例

/*
    假如我们在开发一个系统时需要对员工类进行设计,员工包含3个属性:姓名、工号以及工资。
    经理也是员工,除了含有员工的属性外,另为还有一个奖金属性。
    请使用继承的思想设计出员工类和经理类。要求类中提供必要的方法进行属性访问。
 */


abstract class Staff{
    String name;
    String id;
    int salary;

    public Staff() {
    }

    public Staff(String name, String id, int salary) {
        this.name = name;
        this.id = id;
        this.salary = salary;
    }

    public abstract void work();
}

class Worker extends Staff{

    public Worker() {
    }

    public Worker(String name, String id, int salary) {
        super(name, id, salary);
    }

    @Override
    public void work() {
        System.out.println("普通员工敲代码");
    }
}

class Manager extends Staff{

    int common;

    public Manager() {
    }

    public Manager(String name, String id, int salary, int common) {
        super(name, id, salary);
        this.common = common;
    }

    @Override
    public void work() {
        System.out.println("经理做PPT");
    }
}

public class AbstractTest {
    public static void main(String[] args) {
        Staff s1 = new Worker("李刚", "sj1001", 10000); // 抽象多态
        s1.work();

        Staff s2 = new Manager("江川","sj1002",6000,200000);
        s2.work();
    }
}

2、Interface 接口

接口:表示一个类的额外功能的实现
java提供了一个关键字表示接口:interface
接口我们可以将它看作成一个特殊的类, 因为接口也会被编译成一个class文件

接口注意事项:

1. 接口中只能存在抽象方法, jvm默认会在方法前使用public abstract进行修饰, 刚学java推荐加上
2. 类和接口是实现关系 可以通过关键字implements实现接口
3. 当一个具体的类实现一个接口的时候, 必须要实现接口中所有的抽象方法
4. 若一个抽象类实现一个接口的时候,可以选择性地实现接口中的抽象方法
5. 一个类可以同时实现多个接口,使用逗号隔开
6. 接口和接口存在继承关系, 并且一个接口可以同时继承多个接口
7. 接口中只能定义常量, 默认修饰符为public static final
8. 接口无法实例化, 接口中不能出现构造方法

面试题:

java中允许多继承吗?
若是类和类之间的继承,只能单继承,不能多继承
若是接口与接口之间的继承,可以多继承
posted @   小钱没有钱  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示