继承与多态

继承:extends
java虚拟机会从继承关系的树形图最下方开始搜索方法
如果子类中还打算引用父类的方法:super.functionName();
public 类型的成员(变量和方法)会被继承
private 类型的成员不会被继承

如何访问被隐藏的变量呢?
1 使用“this”关键字可以访问被局部变量隐藏的本类中的实例变量
2 关键字“super”可以访问父类中被隐藏的实例变量
3 类变量可以用类加“.”来访问。
4 强制转换为父类型。

变量和方法覆盖和隐藏的不同:
1 一个类的实例无法通过使用全局名或者强制自己转换为父类型,以访问父类中被隐藏的方法(访问的是子类的方法,比较诡异。当然直接实例化一个父类,然后调用方法时就是父类中的方法了),只能super。然而强制转换子类为父类型之后,可以访问父类中被隐藏的变量。
2 另外静态方法不能覆盖父类的实例方法(可以覆盖静态方法),而静态变量却可以隐藏父类的一个同名实例变量
3 同样,实例方法不能覆盖父类的同名静态方法(同上),而变量却可以隐藏父类的同名变量成员,不论父类的这个变量成员是类变量或者是实例变量。

运用多态时,引用类型可以是实际对象类型的父类,参数和返回类型也可以多态

防止某个类被作出子类:
1 存取控制。[b]类只能被标记为public或不标记[/b],不标记的类只能被同一个包的类做出子类
2 final。被final修饰的类不能被继承(修饰方法时表示该方法不能被覆盖)
3 让类拥有private的构造方法(注意构造方法没有void修饰符),这样在子类的构造方法中访问不到父类私有的构造方法了,因此不能做出子类。

方法覆盖的规则:
1 参数必须要一样,且返回类型必须要兼容(该类型或其子类)
2 不能降低方法的存取权限

方法的重载:(与多态毫无关系)
1 放回类型可以不同
2 不能只改变返回类型,(改变参数的顺序可以)
3 可以更改存取权限
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值