Java学习笔记(三)——抽象类

接口:

初期理解,可以认为是一个特殊的抽象类。当抽象类中的方法都是抽象类,那么该类可以通过接口的形式来实现。
接口是不可以创建对象的,因为存在抽象方法。需要被子类实现,子类对接口中的抽象方法全部覆盖后,子类才可以实例化,否则子类是一个抽象类。

  • 接口定义格式特点:
    ①接口中常见的定义:常量、抽象方法。
    ②接口中的成员(都是public)都有固定修饰符(JVM默认存在修饰符):
    常量:public static final
    方法:public abstract
    ③类可以继承一个类的同时可以实现多个接口。

代码示例 1

/*
需求:获取一段程序运行的时间。
原理:获取程序开始和结束的时间并相减即可。

获取时间:System.currentTimeMillis();

模板方法:在定义功能时,功能的一部分是确定的,但是有一部分是不确定的,而确定的部分在使用不确定的部分,
那么这时就将不确定的部分暴露出去,由该子类去完成。
*/
abstract class GetTime{
    public final void getTime(){
        long start=System.currentTimeMillis();
        runcode();
        long end=System.currentTimeMillis();
        System.out.println("毫秒:"+(end-start));
    }
    public abstract void runcode();
}
class SubTime extends GetTime{
    public void runcode(){
        //测试代码
        for(int x=1;x<=1000;x++)
            System.out.println(x);
        System.out.println();
    }
}
class template{
    public static void main(String[] args){
        SubTime gt=new SubTime();
        gt.getTime();
    }
}

代码示例 2

/*
假如我们在开发一个系统时需要对员工进行建模,员工包含三个属性:姓名、工号以及工资。
经理也是员工,除了含有员工的属性外,另外还有一个奖金属性。
请使用继承的思想设计出员工类和经理类。
要求类中提供必要的方法进行属性访问。
 */
abstract class Employee{
    private String name;
    private String id;
    private double pay;
    Employee(String name,String id,double pay){
        this.name=name;
        this.id=id;
        this.pay=pay;
    }
    public abstract void work();
}
class Pro extends Employee{
    Pro(String name, String id, double pay){
        super(name, id, pay);
    }
    public void work(){
        System.out.print("Pro Work");
    }
}
class Manager extends Employee{
    private  int bonus;
    Manager(String name,String id,double pay,int bonus){
        super(name,id,pay);
        this.bonus=bonus;
    }
    public void work(){
        System.out.print("Manager Work");
    }
}
class example {
    public static void main(String[] args){
        Pro p=new Pro("zhang","100",100);
        p.work();
    }
}

你可能感兴趣的:(Java,java,抽象类)