android学习札记第3章之面向对象三
这章继续面向对象基础中各语法的用法,其中包含运行期类型识别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实现,然后创建变形金刚类完成进攻和拿兵器的方法,最后测试变形金刚是否能够拿兵器进攻。