说明:项目很重要,学项目比学知识点进步大,但也要难度大些;把经典的东西不停地重复;人在集体中进步得快些,另外,代码不是一蹴而就的,都是不断地迭代的。
1.继承也是一种的抽象,是超类将派生类属性抽象出来放到构造器中,此时超类可以将派生类的属性抽象出来分为多个构造器,
构造器的分类可以遵循某些原则,如各个派生属性的异同和个数。
2.派生类继承超类过程中,首先派生类可以调用超类的构造器,并用在派生类中的构造器用super给其对应的超类赋值,同时也是给自己赋值,
另外,派生类中还可以有其特的属性和方法,而超类中的参数列表可以接受测试类的传参。
3.其实,派生类在构造器中也可以调用超类构造器,给超类赋值。
----------------------------------------------------------------------------------------------------------
抽象超类
(派生类公有属性)
(构造器1,2...n)
(普通方法)
(抽象方法)
|
|
| ------------------------------------------| ------------------------------------------------
| | |
| | |
派生类1 派生类2 派生类n
(特有私有属性) (特有私有属性) (特有私有属性)
(加载当前类的静态资源) (加载当前类的静态资源) (加载当前类的静态资源)
(构造器1,super) (构造器2,super) (构造器n,super)
(重写超类抽象方法) (重写超类抽象方法) (重写超类抽象方法)
(普通方法) (普通方法) (普通方法)
| | |
| | |
| ---------------------------------------- | -----------------------------------------------
| | | | |
| | | | |
| | | | |
| 接口a 接口n |
| | |
| -----------------------------------------|-------------------------------------------------|
|
|
公共入口类
(定义当前类特有属性)
(创建实例对象)
(公有方法)
(某公有方法a,并包装其余方法)
(main启动类,调用公有方法a)
--------------------------------------------------------------------------------------------------------------------------
说明:
超类,是对派生类的一种抽象。把其中的共有属性抽出来,并把公有方法抽出来,这些都定义在超类当中,其中某些方法若派生类有不同实现,则应该定义为抽象方法,所以此类此时也应该定义为抽象类。另外,对于构造器,它是在创建对象时被调用,而参数和构造器的重载的写法是根据派生类的属性来的。所以,从设计的角度来看,是先有派生类,再由超类的,但是写的时候,是先写超类,再写派生类;
派生类,定义特有的、私有的属性,而公有的属性直接在构造器中用super调用超类的属性即可。用static块加载静态资源,如图片。重写超类的抽象方法,并直接调用某些普通方法,还有些方法是特有的,被用来类与类之间相互调用。
接口,其中对于部分派生类若存在某些共有的方法,则可以定义为接口,并将其写为抽象方法,这样利于后期的维护和扩展,然后派生类实现超类的方法即可。
公共入口类,先创建派生类的对象,然后根据实际需求写公共方法,并封装一个方法a,而这个方法a其中包含其它超类的主要方法,然后在main方法中调用该方法a。