java的若干问题(1)——继承、多态、抽象类与接口

时间:2023-02-26 11:26:15

今天,我们介绍一些关于继承、多态、抽象类与接口之间的一些问题与困惑。

1、继承的概念。

继承的关键字extends(扩展)
继承只允许多层继承,不能多重继承。(C++可以多重继承)
继承中,父类定义无论是属性还是方法,必须采用protect及以上的权限,子类才能进行访问。但是可以采用方法进行间接访问。
2、继承的本质。
在继承中,子类对于父类的继承源于构造函数中,对于父类的构造。也就是说子类在进行构造函数时,要先进行父类构造函数,才会进行自己的构造函数。(通常是在构造函数第一句super())。
3、继承中方法的覆写。
子类可以写同父类中相同的方法,即方法名,参数及返回值均相同,只不过函数体不同的方法。但是其访问权限一定要比父类的大。
如果要调用父类中已被子类覆写的方法,要用super.方法名来进行,如果用this.方法名,则会调用子类的方法。
4、覆写与重载的区别。
覆写是子类对父类方法的覆写,通常简写为Overriding,他要求方法名、参数及返回值均相同,只会发生在继承类中。
而重载是对同一个方法名,有不同的参数或者返回类型的函数。
5、继承中属性的覆写
同方法覆写相类似。
6、覆写的属性和方法的访问。
遵循如下原则:
this:如果使用this,则先会在本类中寻找,如果没有所要找的,则会去父类中找。
super:直接去父类中查找目标。
7、继承使用的方面
主要是对于一个大类具有相同的属性,即对类的进一步概括而形成的类,通常称为父类。
继承的使用的好坏,取决于父类设计的好坏。
8、final关键字的注意事项。
final也称为完结器,可以声明类、属性、方法。
final声明的类不能有子类,final声明的方法不能被覆写,final声明的属性不能被修改。
final声明的变量必须用大写。
public static final称为全局常量。
public static 称为全局变量。

9、在对类进行设计时,永远不要去继承一个已经实现好的类。不然的话,在多态的情况下会产生一定的错误。

10、抽象类的的相关事项(abstract)
一个类如果包含了一个抽象方法,则该类一定是抽象类。
一个抽象类不一定有抽象方法。
抽象类必须通过继承来使用,不能实例化,相当于模板功能。
子类继承抽象类,必须覆写所有的抽象方法。
其余之外,抽象类和普通类没什么区别,同样有属性和构造方法。
11、接口的相关知识(interface)
接口里面方法和变量全部是公有的,对于变量来讲则是常量。
一个类(包含抽象类)可以实现多个接口,但是要必须实现所有的方法,不过抽象类可以不用实现接口的方法。
接口可以继承接口,同样用extends就可以,而且可以集成多个。
12、抽象类和接口的区别。
抽象类更像是一种类,他只不过是包含了抽象的方法,换言之,如果没有抽象方法,它完全可以不用是抽象类。
但是接口更像是抽象方法的集合,它里面只有抽象方法和全局常量,但是可以多个实现,这是为了弥补单继承类的缺陷而设计的。

13、多态
多态的来源 继承和重载与覆写
多态的类型 向上转型(父类拥有子类的特性) 向下转型 (子类从父类转移过来)
向下转型之前一定要向上转型,不然转移不成功。
14、instanceof作用
主要是判断一个对象属不属于一个类
这个主要是对多态的一个补充,用这个进行判断时,向上转型就会安全很多。

15、抽象类的应用
抽象类的应用主要是用来做模板类。就如同一个请假条一样,需要什么,再往里面填什么。比如是病假的,是事假的,无论是什么请假条,只需要展示一下,大家就都知道有什么了。
16、接口的应用
接口就如同电脑硬件接口一样,是用来制定标准的,即比如电脑要插USB接口,那么电脑只接受USB类型的,你只需要定义一个USB接口,其他设备实现一下接口的具体内容,到时候就能对接上了。
这么来讲,接口还是一种类型。或者说,接口就如同父类一个级别一样。
17、设计模式,工厂模式
顾名思义,就是做一个代工厂,那么就如同你要做一部苹果手机,工厂只能做苹果手机,但是具体是苹果5S还是6S你不清楚,这时候就要用工厂模式,无论是5S还是6S都需要制作,这个制作时一样的,那么只需要给个参数,确定是生产5S还是6S就行了,这就是工厂模式。
18、设计模式,代理模式
顾名思义,就是把一个事情交给一个代理去做。通常这件事情会有一系列相关的任务和东西要落实,这时候就可以交给代理去做。同样的事情,只需要把真正要做的事情放到代理的工作上即可。
19、设计模式,适配器模式
顾名思义,就是找一个适配器,其目的在于不实现接口里的所有方法而采用的中间的抽象类。在中间的抽象类中,把接口里所有的方法都覆写一遍,方法体为空,等到真正继承适配器类时,再有选择的实现所需要的方法。