Java面向对象—类继承

在子类中是不能访问父类的私有变量的,如果需要使用,需要用super关键字:
super.field
super(name,age) //调用父类的构造方法
而父类中的一些方法可能并不能满足子类的要求,所以子类可以对父类的方法进行重写

如果一个父类的数组中存储了子类的对象,那么如果子类重写了父类的某个方法的时候,循环调用的时候还是会调用子类的方法,因为系统知道你这个对象到底对应的是哪种数据类型,因此能够正确的调用相应的方法,这种方式也是一种多态的体现,在运行时系统会自动选择调用哪种方法,这种现象也叫作动态绑定。

如果不想让一个方法具有动态绑定的特征,只需要给这个方法设置为final关键字即可。

如果类用final关键字标记,类中的所有方法也被自动识别为final方法,而也可以单独标记类中的特定方法为final,这样子类就不能重写这个方法。

抽象类
拥有一个或多个抽象方法的类本身必须本声明为是抽象的,虽然抽象类可以包含具体方法,但是许多程序员认为,抽象类不应该存在抽象方法。
抽象类不能被实例化,只有他的实现类(子类)可以被实例化。

受保护访问
子类不能访问父类的私有方法,如果父类中有些方法或者变量允许被子类访问,只需要将其访问权限改成protected,这样子类就能使用这些方法或属性了。但是为了符合OOP中的数据封装原则,请谨慎使用受保护域。事实上,Java中的受保护部分对于子类和同一个包下的其他类都可见,所以安全性较差,需要谨慎使用。

下面介绍一下Java中的四个访问权限:
1 ) 仅对本类可见 private
2 ) 对所有类可见 public:
3 ) 对本包和所有子类可见 protected
4 ) 对本包可见,默认,不需要修饰符

猜你喜欢

转载自www.cnblogs.com/Fill/p/9205783.html