3.12学习心得

今天我们对抽象类和接口的概念有了初步了解。

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.

接口和抽象类

相同点:

都不能被实例化,位于继承树的顶端,是用于其他类继承或者实现的;

都可以包含抽象方法,子类都必须要实现抽象方法;

在实际的开发中,都是接口先行,一般都是先定义接口,然后开发人员实现接口,完成具体方法的实现;

抽象类是个半成品,可以作为一个模板去使用。

不同点:

抽象类中可以定义普通方法,但是接口中都是抽象方法静态变量

抽象类是可以定义静态方法的,接口不能定义静态方法的;

在抽象中可以定义构造器的,但是在接口中是不存在构造器这个概念的;

一个类最多只能有一个直接的父类或者抽象类,但是可以有多个接口的实现。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值