1.多态
一般方法引用的时候如果没有加对象,就代表引用的方法前面含有this,也就是整个大对象;即最小子类的方法;以下例子用来了解什么是多态;
public class HttpServelet {
public void service() {
doGet();//相当于this.doGet();
System.out.println("HttpServelet!");
}
public void doGet() {
System.out.println("HttpSeverlet.doGet");
}
}
public class MySeverlet extends HttpServelet{
public void doGet() {
System.out.println("MySeverlet.doGet!");
}
}
public class Text {
public static void main(String[] args) {
HttpServelet s = new MySeverlet();//这就是多态;
s.service();
}
}
在这段代码中,运行结果是
MySeverlet.doGet!
HttpServelet!
2.抽象类
抽象类就是为所有的子类提供一个通用模板,所有的子类都可以在上面进行扩展。
有抽象方法的类只能定义为抽象类;
抽象方法不能实例,即不能使用new实例化;
抽象类只能继承;
抽象方法必须被子类实现;
抽象类包含属性、方法和构造方法;
public abstract class AbatrctFather {
public abstract void person();
}
class Child extends AbatrctFather{//The type Child must implement the inherited abstract method AbatrctFather.person(),这是如果没有实现抽象类方法报的错误;
public void person() {
System.out.println("说话");
}
}
首先由于无法实例抽象类,所以只能实例它的继承子类。抽象方法必须实现,否则报错;
3.接口(interface)
在接口中,只有常量和抽象方法(这方法没有abstract修饰,就是普通的方法,只是没有名字);以下是一个简单的接口;
public interface MyInterface {
String myName = "boss";//在这里面省略了public static final
public static final int myAge = 120;
public void test1();// 定义方法,但是不实现;
public void test2(int a, int b);
}
接口就是 指一些不便的常量和不变的方法声明,其他的实现在另一个地方完成;有一点要注意,接口中定义的常量和方法无论写不写都默认由public static final修饰;接口定义的都是public,方法只能是public或者abstract;
- 之所以要使用接口是由于,继承只能单继承,但接口却不止; 一个类可以实现多个接口;
- 不能直接实例化接口,因为会报错;只能new实现接口的子类;
- 继承接口的抽象类可以不用实现接口中的方法,当然也可以实现,并不强求;
4.回调的实现(callback)
paint()这个函数,就是那种写了就自动运行,不需要将其单独调用;现在先了解这么多,后面全学完之后再继续;
在我的理解看来就是指,某一个过程别人已经定义好了,但是却留下了一下可以调用的方法,某些人就可以通过写这些方法,然后被之前定义的过程进行调用,这样最后就只需要写其中的方法,然后调用最大的那个过程,就可以了;就像下面的程序结构一样;
public class MyCallback {
public static void person(IMyInter g) {
System.out.println("第一个");
System.out.println("第二个");
g.run();
System.out.println("1");
}
public static void main(String[] args) {
person(new MyPerson());
}
}
class MyPerson implements IMyInter{
public void run() {
System.out.println("第三个");
}
}
interface IMyInter{
void run();
}