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

---------------------- 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值