2494天 Mr.贰呆

唯一自信的就是自己的人品。
寻求王者玩家一起开黑净化峡谷环境​​

【Android】学习札记第3章之面向对象三

发布于 / 1316 次围观 / 0 条评论 / Android / 二呆 /

这章继续面向对象基础中各语法的用法,其中包含运行期类型识别instanceof、抽象类、final、static、访问控制符、接口和一些面向对象的练习,然后进一步掌握面向对象的思想,对封装、继承、多态进一步理解。

工具/原料

JDK、eclipse、android SDK、ADT

一、面向对象基础

1、instanceof(运行期类型识别):

Shape s=new Line();

如果对一个对象的真实类型及其父类型判断,就都返回true。

作用:可以在向下转型前判断是否属于该类型,然后在向下转型,之后就可以调用子类中的成员了,如:

if(s intanceof Line){

Line line=(Line)s;

System.out.println(line.length);

}

2、抽象类:

没有完成的类。

作用:

通用的代码:子类可以直接继承抽象类这些通用的代码,需要在子类里实现。

通用方法的定义:子类可以向上转型,再调用抽象类里的方法。

注意:

①不能创建对象,只能创建子类的对象。

②包含抽象方法的类,必须是抽象类。

③抽象类中,不一定包含抽象方法。

3、final:

用与修饰变量、方法、类。

变量:

final int a=10;//变量的值不可变(常量)

final Point a=new Point(2,3);//a.x=4;->正确,a是Point对象在内存中的地址,而不是x,y的值。

方法:不能被子类重写。

类:不能被继承。

4、static:

①静态成员属于类,不属于对象

②访问静态成员,应该使用类名来调用。

③静态方法中,不能访问非静态成员。

④什么时候使用静态?

使用原则:因为静态是“非面向对象”语法,所以能不用就不用。

使用场景:⑴共享的数据(常量)。如:Mat.PI、Integer.MAX_VALUE。(节省内存)

⑵工具方法:如:Integer.parseInt(字符串)、Math.pow(a,b)、Mat.sqrt(a)。

⑤常量定义

⑴static final:如:static final int MAX_VALUE=99999;

⑵命名习惯:全大写、单词之间加下划线。

5、访问控制符:

控制一个类,或类内部成员的访问范围。

类       包      子类       包外

public       √        √        √            √

protected √        √        √            X

default      √        √        X            X

private      √        X         X           X

4个访问控制符的选择原则:尽量使用小的范围。

公开的类或成员,是与其他开发者的一个契约,约定公开的东西会保持稳定不变。

6、接口:

是一个极端的抽象类,用interface代替class,用implements代替extends。

作用:结构设计工具,用来“解耦合”。

限制:接口中,只能定义:

①公共的常量;

②公共的抽象方法:public abstract可以省略;

③公共的内部类或内部接口。

二、面向对象练习

1、定义一个工具类Util:

添加静态的工具方法:

int2Bytes():整数拆分成4个字节值,放入byte[]数组

bytes2Int():byte[]数组中的4个字节值合并成一个整数

2、用面向对象思想实现变形金刚拿各种兵器进攻的场景:

首先创建兵器接口Weapon提供方法,让各个兵器类Sword、AK47、LangYaBang实现,然后创建变形金刚类完成进攻和拿兵器的方法,最后测试变形金刚是否能够拿兵器进攻。

注意事项

此章要深刻理解多态的含义:instanceof、接口都可以提现多态。动态绑定:指在执行期间判断所引用对象的类型,根据实际的类型调用相应的方法。多态的作用:消除类型之间的耦合关系。

要谨记访问控制符的规则,另外,在初学面向对象时,要把上面的变形金刚连敲代码,做到七遍疗程,熟练的一直到理解面向对象思想。

sitemap