Java 继承。
Java 封装。
Java 多态。
继承
把很多类的相同特征和行为进行抽取,
用一个类来描述。
让多个类和这个类产生一个关系。
这样的话,多个类就可以省略很多代码。
这个关系就是继承。
java中用extends关键字表示。
继承的体系结构
多个具体的对象,
不断的向上抽取共享的内容,
最终形成了一个体系。
这个体系叫做继承体系。
继承体系的学习和使用原则
1,学习顶层的内容。
因为他是整个体系的共性内容。
2,创建子类使用。
也就是使用底层的具体对象。
继承的特点:
java中只能单继承,没有多继承。
java可以有多重(层)继承。
继承的好处:
继承的出现提高了代码的复用性。
继承的出现让类与类之间产生了关系,
提供了多态的前提。
子父类中的成员关系
成员变量
在子类方法中使用一个变量时,
首先,
在方法的局部变量中找这个变量,
有则使用。
否则,在本类中找成员变量,
有则使用。
否则,在父类中找成员变量,有则使用。
否则,报错。
成员方法
用子类对象使用一个方法时。
首先,在子类中找这个方法,
有则使用。
否则,在父类中找这个方法,
有则使用。
否则,报错。
重写和重载的区别
重载:在同一类中。
方法名相同,参数列表不同。
重载可以改变返回类型。
重写:在不同类中(子父类中)
方法声明相同
(返回类型,方法名,参数列表均相同)。
重写需要注意:
子类方法的访问权限要大于等于父类方法的访问权限。
静态只能重写静态。
但是这种情况一般不会出现。
构造方法
子类的实例化过程
子类创建对象时,会先去创建父类的对象。
默认是去调用父类的无参构造方法。
子类构造方法中,
第一行默认是super()
为什么子类中第一行会默认有super()
因为他继承父类的成员使用,
使用前这些成员必须初始化,
而他们是父类的成员,
所以,必须通过父类进行初始化。
所以,会先创建一个父类的对象。
当父类没有无参构造方法时,
必须使用this
或者super调用其他的构造方法。
this和super的区别
this:代表本类对象的引用。
super:代表父类的存储空间。
封装
指隐藏对象的属性和实现细节,
仅对外提供公共访问方式
将抽象得到的数据和行为(或功能)相结合,
形成一个有机的整体,
也就是将数据与操作数据的源代码
进行有机的结合,
形成“类”,
其中数据和函数都是类的成员。
在电子方面,
封装是指把硅片上的电路管脚,
用导线接引到外部接头处,
以便与其它器件连接。
比如电脑机箱、笔记本等
好处:
将变化隔离;方便使用;
提高复用性;提高安全性
多态
同一个对象,
在程序不同时刻的多种运行状态。
举例:动物,狗是狗,狗是动物。
水(气态,液态,固态)
多态前提
存在着继承或者实现关系
有方法的重写
父类(接口)引用指向子类(实现)对象
多态的好处和弊端:
好处:
多态的存在提高了程序的扩展性和后期可维护性
弊端:
虽然可以预先使用,
但是只能访问父类中已有的功能,
运行的是后期子类的功能内容。
不能预先使用子类中定义的特有功能。
多态中对象调用成员的特点
Fu f = new Zi();
成员变量:编译看左边,运行看左边
成员方法:编译看左边,运行看右边
静态方法:编译看左边,运行看左边
抽象类
多个类有相同的方法声明,
但是方法体不一样。
这个时候,
我们考虑把方法声明进行抽取。
让子类继承后,
自己去实现方法体。
没有方法体的方法
我们需要用抽象标志下。
抽象的关键字是:abstract。
抽象类:
该方法称为抽象方法,
包含抽象方法的类就是抽象类。
抽象类的特点:
抽象类和抽象方法都要用abstract进行修饰
抽象类不能被实例化
抽象类中不一定有抽象方法,
但是,
有抽象方法的类一定是抽象类。
抽象类中数据的特点
成员变量:
抽象类中可以有变量,
也可以有常量。
成员方法:
抽象类中可以有抽象方法,
也可以有非抽象方法。
构造方法:
抽象类是一个类,
所以,它有构造方法。
虽然本身不能实例化。
但是可以给子类实例化使用。
抽象类中的问题
抽象类中是否有构造方法?
能不能被实例化?
如果不能,
为什么有构造方法?
抽象类有构造方法。
抽象类不能被实例化。
抽象类中的构造方法供子类实例化调用。
抽象关键字abstract
不可以和哪些关键字共存?
private:
私有内容子类继承不到,
所以,不能重写。
但是abstract修饰的方法,
要求被重写。
两者冲突
final:
final修饰的方法不能被重写。
而abstract修饰的方法,
要求被重写。两者冲突。
static:
假如一个抽象方法能通过static修饰,
那么这个方法,
就可以直接通过类名调用。
而抽象方法是没有方法体的,
这样的调用无意义。
所以,不能用static修饰。
抽象类中可不可以没有抽象方法?
如果可以,这样的类有什么用吗?
抽象类可以没有抽象方法。
抽象类中没有抽象方法的作用,
只是为了不让别的类建立该抽象类对象。
这个在awt中有体现。
ITSTAR∣一起学编程
长按,识别二维码,加关注
我就知道你“在看”
如果觉得《Java三个小老弟》对你有帮助,请点赞、收藏,并留下你的观点哦!