您的位置:首页 > 编程语言 > Java开发

java语言学习连载(四)--深入理解面象对象

2010-07-19 22:38 465 查看
深入理解面象对象

1:面象对象的特征
抽象,封装,继承,多态
指导原则是:提高可维护性和可复用性

2:类的继承
一个类只能扩展自一个其它类
子类可以重写或覆盖父类的方法,可以添加新的属性和方法
子类不能继承父类中私有成员,被覆盖成员和被隐藏成员
一个类不能同时声明为abstrart和final,因为abstrart是用来被继承的而final是不被继承的
类的类的可访问性不受成员的可访问性限制
继承和实现接口均为is a 关系

3:方法重载和方法覆盖

A:
在同一个类中的两个或两个以上的方法可以有同一个名字,只要它们的参数声明不同即可,被称为重载(ovenloaded),是多态式的一种实现方式:另一种为重写(overwriting),当一个重载方法被调用时,Java用参数的类型或数量来表明调用的重载方法的版本,每个重载方法的参数类型数量必须是不同的,每个重载方法可以有不同的返回类型,但返回类型不足以区别所调用的是哪个方法,所以在调用时,原参数匹配的方法被执行
自动类型转换也适用于重载方法的自变量
B
1:在子类中定义的一个方法,其名称返回值类型及参数,正好与父类中某个方法的名称,返回类型及参数向匹配就是子类的方法覆盖了父类的方法
2:子类方法不能抛出父类方法的访问权限,否则编译错误
3:子类方法不能抛出父类方法更多的异常,否则编译错误
4:方法覆盖只存在于子类和父类之间,在同一个类中只有重载,不能被覆盖
5:父类的静态方法不能被子类覆盖为非静态方法,否则编译错误
6:子类可以定义与父类静态方法同名的静态方法,以便在子类中隐藏父类的静态方法,在编译时必须满足覆盖类似的约束
7:父类的非静态方法不能被子类覆盖为静态方法
8:父类的私有方法不能被子类覆盖
9:父类的抽象方法可以被子类覆盖(1:子类实现父类的抽象方法2:子类重新声明父类的抽象方法)
10:父类的非抽象方法可以被覆盖为抽象方法

4:构造函数
构造函数是对象被创建时初始对象的成员函数,它具有和它所在的类完全一样的名字,创建对象时就会自动调用它,没有返回类型,其返回值类型就是这个类型本身,当一个类中未显示定义构造函数时,默认构造函数以类名为函数名,参数为空,函数体为空,虽然父类中某一个构造函数有字符串参数s,但子类继承父类时并不继承构造函数,所以只能使用默认构造函数
父类构造函数是先子类的构造函数运行的

Super和shis用法
在Java中,this通常指当前对象,super则指父类的,当想要引用当前对象的某个成员,可以利用thsi来实现这个目的,this的另一个用途是调用当前对象的另一个构造函数,如果想引用父类的某个成员,需要用super
总结如下
A:super(参数):调用基类中的某一个构造函数(应该为构造函数的第一条语句,可不显示写出)
B:this(参数):调用本类中的另一个形式的构造函数(应该在未构造函数中的一条语句,可不显示写出)
C:super:当引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员变量或方法,基类与派生类中有相同成员定义时)
D:this:代表当前对象名
注:构造函数不能被继承,也不能被覆盖,但是可以重载
父类中没有生命构造函数,隐含的默认构造函数会调用super,只要父类中有一个默认的构造函数,super和this语句就不是强制的,构造函数默认的第一条语句是super。一个构造函数中,不能同时出现super和this,调用super不一定能正常工作,因为父类可能没有默认的构造函数

----end----


转载请注明出处:http://blog.csdn.net/ecorefeng
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: