Java 继承 Object包含服务
2014-04-17 20:12
357 查看
Java所有继承均为公有继承(c++有私有继承和保护继承)
子类功能更加丰富,父类方法不适用时需要覆写改方法(super.getSalary+...)
super不是对象的引用,只是一个指示编译器调用父类方法的特有关键字(c++中采用父类::方法名调用父类方法)
super(n,s...)调用父类的构造函数
Manager向上转型为Employee时,调用覆写方法时,虚拟机能够识别具体引用对象类型,调用覆写后的方法(重点)即对象多态性
上转的对象只能调用父类中已有的方法(或者是之类覆写的方法)从子类到父类中查找改方法
Java不支持多继承,可实现多接口
不能将超类的引用赋给子类(不是每个员工都是经理)
动态绑定(对象方法执行过程)方法名字和列表成为方法的签名
1)获取所有候选方法
2)重载解析
3)private,static,final方法实现动态绑定
4)需找合适的方法(具体见上对象多态性)
虚拟机为每个类创建一个方法表,便于查找,节省搜索时间,子类方法不能低于父类方法的可见性
阻止继承:
final类 final class...(Sting类)
final声明的方法不允许覆盖
c++和c#方法都默认不具有多态性(内联处理,频繁调用)
强制类型转换:
(int)x
向下转型之前需要判断是否能够成功转换
if(staff[1] instanceOf Manager){
boss=(Manager)staff[1];
}
protected方法只对子类和同一包中的其他类可见
默认——只对本包可见
object类:所有类的超类,可引用任何类型对象
Object提供的服务:
equal()方法:两个对象状态相等,则这两个对象就相等(getclass()返回对象所属的类或者对象instanceOf...(对象是类或其子类的实例))
相等测试与继承:
自反性,对称性,传递性,一致性
1)if(this==otherObject) return true;
2) if(otherObject==null) return false;
3) if(getClass!=otherObject.getClass()) return false;后者if(!(otherObject instanceOf ClassName)) return false;
4)进行域的比较:return field1==other.field1&&field2==.....
hashcode();计算散列码,每个对象默认散列码为其存储地址(散列码是由其内容导出的)若重新定义equals()方法,则必须定义hashcode()方法,返回一整数值,且需要和equals定义保持一致。
toString()方法:当把一个对象与一个字符串用+连接起来时,Java编译会自动调用toString()方法
参数数量可变的方法:(...相当于[]数组的意思)
public static double max(double... values){
for(double v:values){}
}
枚举:
所有枚举类型都是Enum类的子类
static Enum valueOf(Class enumClass,String name);toString();
返回枚举常量名
int ordinal()
返回枚举常量位置,从零开始
反射:
使用对象主要是工具构造者继承设计的技巧:
1)将公共操作和域放在超类2)不要使用受保护的域
3)使用继承实现is-a关系
4)所有继承方法都有意义时才使用继承
5)覆盖方法时,不要改变预期的行为
6)使用多态,而非类型信息
反射对系统程序及其有用,不适用于应用程序
相关文章推荐
- Qt Meta Object system 学习(一)
- Qt Meta Object system 学习(二)
- objective-c runtime
- 01-Objective-c简介
- Ldap实现节点属性查询
- Programming with objective-c
- Objective-C实现常用的4种排序算法
- Objective-C实现常用的4种排序算法
- Objective-C 函数 “值传递” 和 “引用传递” 和 C
- Cannot get a connection, pool error Timeout waiting for idle object
- 黑马程序员:Objective-C Foundation框架
- 基于ObjectARX的DWG文件访问初探
- uiautomator中的UiObject学习笔记(2)
- ObjectARX 开发
- ObjectAL for iPhone and Mac(持续更新)
- 用 ObjectiveSugar 扩展NSArray NSDictionary NSSet NSNumber
- iOS: NSObject中执行Selector的相关方法
- CocoaPods一个Objective-C第三方库的管理利器
- 使用开源库 Objective-C RegEx Categories 处理正则表达式
- paip.提升效率---request自动绑定domain object