抽象类概述及定义员工属性练习

抽象类的概述
父类当中的方法,被它的子类们重写,子类的各自实现又不一样.
那么父类的方法声明和方法体,只有声明还有意义,而方法体内容则没有存在的意义
这种没有方法体内容的方法称为抽象方法

Java 语法规定,如果一个类中包含了抽象方法,那么该类是一个抽象类;

抽象方法:没有方法体的方法
抽象类:包含抽象方法的类

使用 abstract 关键字修饰成员方法,该方法就成了抽象方法,
抽象方法只包含一个方法名,没有方法体

修饰符 abstract 返回值类型 方法名(参数列表);
public abstract void run();

1.不能直接创建 new 抽象类对象
2.必须用一个子类来继承抽象方法
3.子类必须重写抽象父类当中的所有抽象方法
4.重写实现:子类重写父类当中的抽象方法,去掉抽象方法当中的 abstract 关键字,然后添加方法体大括号
5.创建子类对象进行使用
6.方法重写,是子类对父类的抽象方法的完全实现,我们将这种方法重写操作 , 叫做 [ 实现方法 ]



定义一个类是员工,员工有id和name属性, 有一个方法是eat,调用eat()方法员工输出吃饭, 有一个方法是work,
不同的员工工作的内容不同,定义三个类,程序员,老师,网管, 分别调用work的时候输出"id为xx的name写代码",“讲课”,
“拉网线”。 要求:使用抽象类实现以上功能。

抽象类实现

员工类

package com.homework;
// 定义一个员工类
public abstract class Employee {

    // 属性私有化
    private int id;
    private String name;

    //提供公共的成员方法setXxx和getXxx方法
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    // eat方法 输出吃饭  成员方法
    public void eat() {

        System.out.println( name + "员工在吃饭...");
    }

    // work方法 抽象方法
    public abstract void work();

}

程序员类

package com.homework;

public class Programmer extends Employee {

    // 工作
    @Override
    public void work() {
        //"id为xx的name写代码"
        System.out.println("id为" + super.getId() + "的" + super.getName() + "写代码");
    }

}

网管类


package com.homework;

// 定义一个网管类
public class WebMaster extends Employee {

    @Override
    public void work() {
        System.out.println("id为" + super.getId() + "的" + super.getName() + "拉网线");
    }
}

老师类

package com.homework;

//定义一个老师类
public class Teacher extends Employee {

    // 工作
    @Override
    public void work() {
        System.out.println("id为" + super.getId() + "的" + super.getName() + "讲课");
    }
}

测试类

package com.homework;
// 测试类
public class TestEmployee {

    public static void main(String[] args) {
        // 构建三个员工类对象
        Programmer p = new Programmer();
        p.setId(1);
        p.setName("张三");
        Teacher t = new Teacher();
        t.setId(2);
        t.setName("李四");
        WebMaster w = new WebMaster();
        w.setId(3);
        w.setName("王五");
        // 调用eat方法 和work方法
        p.eat();
        p.work();
        t.eat();
        t.work();
        w.eat();
        w.work();
    }
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值