Android开发学习——Day11(Java基础知识四)

2019-08-10  本文已影响0人  明天_ff

学习目的

进一步学习Java中的基础知识:代码块、内部类、继承和多态。

学习过程

在学完一个知识点的使用之后,便进行摸索尝试,在不断的试错中真正理解其使用。

技术

1.代码块:优先于类加载的代码部分

代码块的使用

使用代码块可以在定义对象之前先完成一些准备工作,它是类的一部分。类里面可以有多个代码块,执行顺序和出现的先后顺序相同。

注意:尽量不要在类里面写多个代码块。

2.内部类:定义在一个类内部的类

在编写Java程序的过程中,当我们希望一个类中的部分方法和成员变量抽离出来单独管理时,可以使用内部类。内部类可以有效地进行封装,而且与其外部类有一定的相关性,便于阅读。

当内部类定义为静态时,它犹如外部类,可以被外部直接调用;而当内部类是非静态时,在调用时它犹如其外部类中的一个成员变量。

注意:

1)静态元素均优先于类加载,故当内部类是静态类时,不能调用其外部类的元素。

2)关键字“new”之后只能加构造函数,但在调用内部类中构造方法时(A是外部类,B是内部类),按照正逻辑是:

A.B ab = new A.B();

那么编译器就会出现一个错误——"is not an enclosing class"。故在调用非静态的内部类时,应当:

A a = new A();  

A.B ab = a.new B();  

没有静态(static)的内部类不能使用外部类进行操作,必须用实例来进行实例化内部类。

3.继承:获得其他类的方法和属性,即为父类,并且按照需要添加自己的属性和方法

用法:

A(子类) extends B(父类){...}

Tips:

1)java里面只能单继承 但可以变相多继承 A->B->C->...

2)所有的类都是直接或者间接继承于Object类

3)当调用子类的一个方法时,如果没有就会到父类里面去查找

4)如果在子类里面需要调用父类的方法或者显式调用父类的属性,用super()

Ps:什么情况下需要在一个方法里面调用super的对应方法?

如果一个方法需要完成一个功能,又不能单独完成,必须要父类做相应的工作,辅助子类完成功能。

1>父类做完之后 子类再操作

2>子类做点事情之后,再调用父类去完成

5)如果子类里面需要重新实现父类的方法,就需要重写方法

重写方法标识符:”@override“,即注明该方法为重写方法

6)如果父类有自定义构造方法,子类的构造方法里必须显式调用父类的构造方法,即辅助子类完成

7)如果父类有内部类 子类中有同名的内部类 那么父类中的内部类就被屏蔽了

8)如果非要使用父类中的内部类,那么只能使用全类名,即——类.内部类

4.多态(polymorphic):同一个方法有多种实现

代码演示--多态

如果有继承关系:子类的对象可以使用父类变量接收(类型的自动向上转换)

代码演示--继承接收

感悟

学习基础知识的过程是远不及做实战项目有意思的,这点我很明白。但是,没有牢固的基础,往后的项目很定会受到影响。所以,基础要打牢,知识点若是比较抽象,那么就自己找相应环境,尝试着去实现,不断地试错,做到深刻理解。见微知著,积攒点滴,才能汇聚江河。

上一篇下一篇

猜你喜欢

热点阅读