Java继承详解

Java中的继承

  • 在java中类与类之间只能是单继承,接口与接口之间可以多继承

一、继承的产生的原因

  • 为了实现代码重用

二、继承的规则

  • 只能发生在类与类,接口与接口之间
  • 使用extends关键字
  • 父类的构造器不能被继承
  • 类和类之间只能单继承(一个父亲,多个孩子);接口与接口之间是多继承
  • final修饰的不能被继承

三、super关键字

  • 我们都知道this是代表当前类对象,那么super代表的是父类空间的引用
  • 和this()类似,super()代表的是调用父类构造器,且必须是在本类构造器中,所以应该构造器中不能同时出现this(),super();
  • 和this不同,super不能直接打印,因为super并没有直接创建父类对象,而是将父类的属性和方法直接加载到子类的内存中

四、方法重写

1、产生条件?
  • 发生子父类之间
  • 发生在接口和实现类之间
2、构成重写的规则
  • 相同的方法名参数列表返回类型(返回类型可以不同,但必须是被重写方法返回类型的子类型)
  • 访问权限不能被变小
  • 抛出的异常不能扩大
3、父类不能被重写的方法
  • 被private修饰的方法,或者在不同包被default修饰的方法
  • 静态方法

五、对于继承的一些思考

1、为什么java中只有单继承?单继承有什么好处?
  • 当继承多个类时,可能这多个类中有一样的方法,子类调用该方法,就无法判别具体应该调用哪个方法
  • 当实现多个接口时,因为接口中只能是抽象方法,如果是同一抽象方法,那么他们实现类实现那个方法是两个接口公共的实现方法
2、哪种访问权限修饰符修饰的方法(属性)可以在子类中直接使用?
  • public protected 一定可以在子类调用
  • default 只能在同包子类中调用
  • private 一定不能在子类中调用
3、子类重写的方法在父类调用,调用的是谁的方法?
  • 调用一个方法,先看子类有没有,再看父类方法有没有;如果父类方法有,但是是private修饰的会编译报错,提示没有该方法不可见;如果都没有,那就调用不了该方法
  • 如果调用的方法是子类重写之后的,这不管在哪里调用,调用的都是重写之后的方法

父类构造器调用本类方法

class Father {
	public Father() {
		paly();
	}

	public void paly() {
		System.out.println("Father's play method");
	}
}

class Son extends Father{
	public void paly() {
		System.out.println("Son's play method");
	}
	public static void main(String[] args) {
		new Son();
	}
}
  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值