工具/原料
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、接口都可以提现多态。动态绑定:指在执行期间判断所引用对象的类型,根据实际的类型调用相应的方法。多态的作用:消除类型之间的耦合关系。
要谨记访问控制符的规则,另外,在初学面向对象时,要把上面的变形金刚连敲代码,做到七遍疗程,熟练的一直到理解面向对象思想。