失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Java三个小老弟

Java三个小老弟

时间:2018-12-13 18:23:11

相关推荐

Java三个小老弟

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三个小老弟》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
我的小老弟

我的小老弟

2024-01-05

小老弟

小老弟

2020-10-10

小老弟跟着我

小老弟跟着我

2018-07-30

“外国小绅士”——老弟

“外国小绅士”——老弟

2020-11-22