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

深入理解面象对象

 

1:面象对象的特征

   抽象,封装,继承,多态

   指导原则是:提高可维护性和可复用性

 

2:类的继承

   一个类只能扩展自一个其它类

   子类可以重写或覆盖父类的方法,可以添加新的属性和方法

   子类不能继承父类中私有成员,被覆盖成员和被隐藏成员

   一个类不能同时声明为abstrartfinal,因为abstrart是用来被继承的而final是不被继承的

  类的类的可访问性不受成员的可访问性限制

  继承和实现接口均为is a 关系

 

3:方法重载和方法覆盖

 

A

在同一个类中的两个或两个以上的方法可以有同一个名字,只要它们的参数声明不同即可,被称为重载(ovenloaded),是多态式的一种实现方式:另一种为重写(overwriting),当一个重载方法被调用时,Java用参数的类型或数量来表明调用的重载方法的版本,每个重载方法的参数类型数量必须是不同的,每个重载方法可以有不同的返回类型,但返回类型不足以区别所调用的是哪个方法,所以在调用时,原参数匹配的方法被执行

自动类型转换也适用于重载方法的自变量

B

1:在子类中定义的一个方法,其名称返回值类型及参数,正好与父类中某个方法的名称,返回类型及参数向匹配就是子类的方法覆盖了父类的方法

2:子类方法不能抛出父类方法的访问权限,否则编译错误

3:子类方法不能抛出父类方法更多的异常,否则编译错误

4:方法覆盖只存在于子类和父类之间,在同一个类中只有重载,不能被覆盖

5:父类的静态方法不能被子类覆盖为非静态方法,否则编译错误

6:子类可以定义与父类静态方法同名的静态方法,以便在子类中隐藏父类的静态方法,在编译时必须满足覆盖类似的约束

7:父类的非静态方法不能被子类覆盖为静态方法

8:父类的私有方法不能被子类覆盖

9:父类的抽象方法可以被子类覆盖(1:子类实现父类的抽象方法2:子类重新声明父类的抽象方法)

10:父类的非抽象方法可以被覆盖为抽象方法

 

4:构造函数

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

父类构造函数是先子类的构造函数运行的

 

Supershis用法

Java中,this通常指当前对象,super则指父类的,当想要引用当前对象的某个成员,可以利用thsi来实现这个目的,this的另一个用途是调用当前对象的另一个构造函数,如果想引用父类的某个成员,需要用super

总结如下

Asuper(参数):调用基类中的某一个构造函数(应该为构造函数的第一条语句,可不显示写出)

Bthis(参数):调用本类中的另一个形式的构造函数(应该在未构造函数中的一条语句,可不显示写出)

Csuper:当引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员变量或方法,基类与派生类中有相同成员定义时)

Dthis:代表当前对象名

注:构造函数不能被继承,也不能被覆盖,但是可以重载

父类中没有生命构造函数,隐含的默认构造函数会调用super,只要父类中有一个默认的构造函数,superthis语句就不是强制的,构造函数默认的第一条语句是super。一个构造函数中,不能同时出现superthis,调用super不一定能正常工作,因为父类可能没有默认的构造函数

 

----end----

 

 

转载请注明出处:http://blog.csdn.net/ecorefeng

 

 

你可能感兴趣的:(Java语言学习)