您的位置:首页 > 其它

3.12学习心得

2018-03-12 16:31 197 查看
今天我们对抽象类和接口的概念有了初步了解。
1.抽象类:在某些情况下,父类中只知道子类中应该包含什么样的方法,但是无法知道其具体的实现内容。
可以通俗理解为,父类定义了一个方向,让子类定义方法去解决。

2.抽象方法和抽象类都是使用 abstract 修饰的。
如果在一个类中定义了抽象方法,那么这个类就是抽象类;
抽象类是无法实例化的,只能作为父类被继承使用;
抽象类的构造器只能用于被实现的子类的构造器调用。

tips:
abstract 是不能修饰成员变量的;
如果方法定义为 static,就不能使用 abstract 修饰符;
如果方法定义为 private ,也不能使用 abstract 修饰符;

3.抽象类的作用:
抽象类体现的是一种模板模式的设计思想,抽象类作为多个子类通用模板,子类在抽象的基础上进行扩充,但是子类整体上会保留抽象类的行为方法(必须要实现抽象类的抽象方法);抽象类一般只是定义需要使用的方法,把不能实现的部分抽象成抽象方法,留给子类去实现;父类中可以有实现的方法,但是子类也是可以对已经实现的方法进行改造的(即重写:override),但是如果在子类中还需要调用父类的实现方法,可以使用 super 关键字(上周学习过的super关键字类似this)。

4.接口本质上是一种最彻底的抽象类。如果在一个类中,一个实现的方法都没有,或者都是抽象方法,那么,这样的类,成为接口。接口定义使用 interface 定义。
语法:
[修饰符] interface 接口名 extends 父接口1, 父接口2... {
0-N 个常量;
0-N个抽象方法;
}
接口中所有的成员在定义的时候访问控制修饰符只能是 public 或者是 default;
接口的命名规范同类的命名规范;
在接口中,成员变量必须是静态的常量,方法必须是抽象方法,所以可以省略相关的修饰符。

5.接口的继承和类的继承不一样,接口支持多继承,同样也使用 extends 关键字,之间用逗号隔开,继承的内容包含了,常量和方法。
语法:Inter3.java
public interface Inter3 extends Inter1, Inter2{
static String C3 = "c3"; // 常量定义的命名规范是全部大写,两个单词之间用 _

void Inter3fun1();

void Inter3fun2();

}


6.

接口的使用

接口是抽象类一样,是不能被实例化的,但是接口可以用于声明引用类型的变量,当使用接口来声明变量时,该变量的运行时类型必须是该接口的实现类。接口的作用:用于定义实现类的行为规范;定义变量;定义一些常量;被其他类实现。一个类是可以实现多个接口的,使用 implements 关键字,多个接口之间用逗号隔开。、语法:
[修饰符:public、final] class 类名 extends 父类 implements 接口1,接口2...{
....
}
注意:此处的extends只能继承一个父类,和接口不同!

7.

接口和抽象类

相同点:都不能被实例化,位于继承树的顶端,是用于其他类继承或者实现的;都可以包含抽象方法,子类都必须要实现抽象方法;在实际的开发中,都是接口先行,一般都是先定义接口,然后开发人员实现接口,完成具体方法的实现;抽象类是个半成品,可以作为一个模板去使用。不同点:抽象类中可以定义普通方法,但是接口中都是抽象方法静态变量;在抽象类是可以定义静态方法的,接口不能定义静态方法的;在抽象中可以定义构造器的,但是在接口中是不存在构造器这个概念的;一个类最多只能有一个直接的父类或者抽象类,但是可以有多个接口的实现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: