学习目的
学习掌握抽象类和接口的定义及其使用,如何测量代码的执行效率。
相关技术、及其使用
抽象类(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你就懵逼了,怎么入手,那个地方要写什么,那个地方要定义什么,就不晓得怎么搞。难受!!!
网友评论