您的位置:首页 > 职场人生

黑马程序员——面向对象(下)

2013-09-29 21:53 267 查看
----------------------
ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------

继承中的关键字

·super

super表示对父类的引用,引用父类的成员方法:super.方法名(),引用父类的成员变量:super.变量,还可以对父类进行初始化,空参数初始化:super();

子类对象在初始化的时候,先对父类进行初始化,子类的构造函数第一行都有个默认的super(),表示对带空参数的父类构造函数的初始化话,如果父类没有空参数的构造函数,子类对象在初始化的时候要指定父类的构造函数:super(参数);

·this

this是对当前对象的引用,格式跟super一样,注意的是用this和super对对象进行初始化的时候,super和this不能同时出现,即不能一同来对对象初始化。

class SubClass{
SubClass(){};
SubClass(int num){
SuperClass();
this();
//上面两句初始化代码只能出现一句
};
}




·final
修饰类,此类就不可以被继承,修饰成员变量和局部变量,此变量就只能被赋值一次,即常量,修饰成员函数,此函数就不能被子类复写。

class Human{
final String sex;
Human(String sex){
this.sex=sex;
}
}
//在对人这个类进行初始化后,性别一确定,是不可以更改的,所以用final修饰


封装

封装是把对象的属性和功能的实现细节隐藏起来,对使用者提供公共的访问方式(一般是对外提供方法,如果是属性一般也用方法封装起来然后提供出去而不是直接被访问)。

封装提高了代码的安全性和复用性,易于使用。



权限修饰符是封装的一种表现形式:



·私有权限(private)
修饰成员变量,成员方法,构造方法,不能修饰类(除了内部类)。被private修饰的成员,只能在它们所在的类中被使用,就算继承也用不了。
·默认权限(default)
修饰类,成员变量,成员方法,构造方法。被修饰的成员只在定义它们的类中被访问,被修饰的类只能被同包的类调用。


·保护权限(protected)

修饰成员方法,成员变,构造方法,不能修饰类(除了内部类)。被protected修饰的成员能在定义它们的类中在子类中被访问,被修饰的类只能被同个包中的其他类被访问。
·公共权限(public)
修饰类,成员方法,成员变量,构造方法。被public修饰的成员,可以被任何一个类调用,不同包也可以,是权限最大的修饰符。


多态

//多态的代码体现
Animal cat=new Cat();
/*
猫这种动物继承自动物类,它可以具有自己的特征,也可以向上转型为动物,使用动物类的引用来访问动物类中的成员*/


多态极大地提高的程序的扩展性,因为当一个父类下面有很多子类的时候,父类的引用指向子类对象,使用父类中的方法就能调用子类的方法。

·多态中注意:



在编译时,虚拟机会看引用型变量所属的类中有没有要被的非静态方法。如果有,编译通过,没有,编译就失败。

运行时,虚拟机会看父类引用指向的子类对象里有没有相应的非静态方法,没有就报错,有就执行,注意此时方法执行是在子类对象上而非父类上执行。


静态成员无论编译还是运行虚拟机看的都是它所属的类,因为它与对象无关,也不是在对象上运行,它是静态绑定在它所属的类上的。

多态中变量无论编译和运行都是参考变量所属的类,编译时父类没有此变量会出错,运行时它的值参考的是子类中变量的值,没有的话则出错。

----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: