Java语言中抽象类和接口的定义及其使用

2019-08-12  本文已影响0人  黑铁选手

学习目的

学习掌握抽象类和接口的定义及其使用,如何测量代码的执行效率。

相关技术、及其使用

抽象类(abstract):
定义一个抽象类就是相当于定义一个模板,起着模板的作用。
在抽象类里面,我们可以定义代码块、构造方法、属性、静态常量、抽象方法和普通方法。但是,在main函数里面不能创建抽象类的实例化。
抽象类的使用:
使用extends 继承一个抽象类 ,如果继承了抽象类,就必须要把抽象类里面定义的抽象方法实现。如果不识闲这个抽象类,也可以把这个抽象类定义成文件
例如:定义一个抽象类 BaseAndroidStudy ,在main函数里面不能对它进行实例化 。
及 BaseAndroidStudy study = new BaseAndroidStudy("java编程思想","攻克腾讯");
但是,可以通过创建抽象类的具体对象和匿名类的方法对抽象类进行实现
例如:

//创建抽象类的具体对象 1、 显示的创建一个类 继承与抽象类 创建这个类的对象
        Student xw = new Student("小王","Java编程思想","拿到一份好的offer");
        //2.使用匿名类 只使用一次
        BaseAndroidStudy zs = new BaseAndroidStudy("Java编程思想","高薪") {
            @Override
            public void StudyC() {
                System.out.println("参加培训");
            }
        };

抽象类里面定义代码块和属性

    //定义一个代码块
    {
        System.out.println("锻炼身体");
    }
    //定义一个属性 用于保存数据
    public String javaBook;
    public Dream dream;

构造方法和普通方法以及抽象方法:

   public abstract void StudyC();//不知道如何去学就不需要实现 子类来实现abstract要使用

    //提供一个构造方法 给子类提供一个方法 给自己的属性赋值
    public BaseAndroidStudy(String javaBook,String dream){
        this.javaBook = javaBook;
        this.dream = new Dream();
        this.dream.name = dream;
    }

抽象类里面定义内部类 :抽象类里面定义的内部类,在内部类里面可以定义构造方法、普通方法,并且,定义的这些方法都可以在内部类里面进行实现。
例如:

private class Dream{
        public String name;

        public void show(){
            System.out.println("我的梦想是:"+name);
        }
    }

接口的定义和相关使用
接口(interface):接口就是定义一套方法用于对象之间的通信,注:不要把接口理解为某一个物理存在的东西。
接口里面默认的变量都是static final (常量)就是必须要初始化,并且常量默认大写,默认情况下不需要自己写 public static final,里面不能定义变量。
接口里面不允许定义代码块、构造方法、普通(实例/对象)方法,只有抽象方法,默认public abstract
如果需要定义就用default
接口里面定义内部类默认public static
例如:

interface TestInterfance{

    int I = 100;
    int COUNT = 20;

    void test();

    class inner{
        int name;
        public void show(){
            System.out.println("内部类");
        }
    }
}

接口的实现:
用implement 对接口进行实现,实现(继承)的时候可以对多个几口进行实现,实现(继承)的时候接口之间用 , 隔开
例如:

class  PXDClass implements TestInterfance,TestInterfance2{
     @Override
     public void test(){
        TestInterfance.inner in = new TestInterfance.inner();
         in.show();
     }
     @Override
    public void  test2(){

     }

 }

测量代码的执行效率:

abstract class  TimeTemplate{
    //通过实现这个方法获得具体测量的代码 不清楚就使用抽象方法
    public abstract void code();

    //实现测量 方法
    public void  calculate(){
        long start = System.currentTimeMillis();

        //测量的代码
        code();
        long end = System.currentTimeMillis();
        System.out.println(end-start);
    }

}

PS

虽然今天学习的东西看着挺简单的但是,当拿到一个demo的时候就不晓得从那个地方开始下手,并且还是经过老师对这个demo进行分析后还是头大。比如说,拿到一个知识点你知道有哪些构成,需要如何定义,但是,拿到一个demo你就懵逼了,怎么入手,那个地方要写什么,那个地方要定义什么,就不晓得怎么搞。难受!!!

上一篇下一篇

猜你喜欢

热点阅读