javaSE学习笔记6 重写

java中的子类是不能获得父类的构造器的

java中子类重写(也叫覆盖Overrider)父类的方法:子类继承了父类,但是父类的方法不太适合子类,所以子类可以重写父类的方法。重写遵循“两同两小一大”规则:两同就是方法名、形参列表相同,两小就是子类的返回值必须比父类的相等或者比父类的小。子类方法声明抛出的异常应该比父类的更小或者相等。一大是指子类方法的访问权限应该比父类的方法的访问权限更大。

重写还有很重要的一点:父类的方法若是static型的,子类的也必须是static型的。子类重写了父类的方法以后,若在子类中想要调用父类中的方法,可以采用super(被覆盖的是实例方法,即没有加static的方法),或采用类名.方法名(被覆盖的方法是类方法,加static的方法)来调用父类中被覆盖的方法。

super是直接父类对象的默认引用。

public class Base
{
	public static void text()
	{}
}

public class Derived extends Base{
	//这样重写是错误的,父类的方法是static型的,
	//子类的也必须一样
	public void text()
	{}
}

重写:若父类中的方法是private型的,那么它对子类是不可见的,也就是不能被重写。子类中定义了跟父类中方法名、参数列表一样的函数那属于定义一个新函数。

当java中创建一个类的对象时,系统会隐式创建该类的父类对象。只要有一个子类的对象存在,则一定存在一个与之对应的父类的对象。所以在子类中使用super引用时,super总是指向调用该方法的子类对象所对应的父类对象。

this和super都不能出现在static方法中原因:static修饰的方法是属于类的,该方法的调用只可能是一个类,而不是对象,那么这样就不存在对应的父类对象或当前对象了,所以使用super或this引用也就失去意义。

如果子类中没有覆盖父类中的属性,而在子类中要调用父类中的属性,则可以省略super关键字。系统会按照以下顺序查询:

1、查看当前方法中是否有定义这个属性。

2、查看当前子类中是否有定义这个属性。

3、查看这个类的父类中是否有这个属性,依次上溯,直到找到Object类,若Object中没有,那么就会报错。

java中的子类不会获得父类的构造器。使用super调用父类的构造器必须出现在第一行。当调用子类构造器来初始化子类对象时,父类构造器总会在子类构造器之前执行。执行父类构造器时,其父类的父类也会先构造,也就是说,创建任何java对象,java.lang.Object的构造器总是最先被执行的。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值