java基础之继承

继承

面对对象编程思想的最终目的就是 :代码复用。
那么代码复用的手段就是做工具,和工具集,并将工具进行保护,这的确能做到代码复用,但这还远远不够。所以产生了继承。
当我们做工具的时候,发现做的几个工具的某些功能大体相同,所以我们可以概括,总结抽象成一个类,这个 类就具有了共同的属性,共同的操作,共同的成员,共同的方法。所以通过这种方式,其实也完成了 代码复用。
首先讲一讲父类的public,protected,private,和无修饰所修饰的的变量在派生后的子类的引用权限。
首先是两个极端的修饰符 private和public
private无论是否继承,无论是否在包内,皆不可直接引用;
public继承后的子类可直接引用,但在包外的非子类需要导包方可直接引用;
protected所修饰的变量是专为继承而用,非子类皆不可用;
无修饰类的变量的引用权限与继承无关,只要是在包内皆可使用;

继承关系中的构造方法

JVM对于有继承关系的类的构造方法先从当前类开始,根据继承关系,追溯到最开始的祖先类,然后再沿着继承关系向下,逐个执行构造方法。
在这里插入图片描述
在这里插入图片描述如果存在一个父类和一个子类,若父类写了双参构造和单参构造方法,但未写无参构造方法,则在子类中构造方法会显示错误,说明无论子类是单参还是双参,则JVM在默认情况下只调用基类的无参构造方法。除非用super(…);的情况下会调用父类的具体哪一种构造方法,与this();一样,super();也只能出现在构造方法中,若有super();则它必须是构造方法的第一条语句。

成员和方法的覆盖

继承可以让子类拥有与父类所拥有的成员和方法,但是子类也可以更改父类的成员和方法,以适应不用于父类的环境和特殊要求,这样就可以使得工具与时俱进,更新换代。
在面对对象程序设计中,上述思想的实现手段就是覆盖。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
此时输出Father类的protectednum输出的是Grandfather类的protectednum变量;
当对father类再定义一个protectednum变量时无论数据类型,都会隐藏掉Grandfather类的protectednum,显示的是Father类里的变量。
在这里插入图片描述
在这里插入图片描述以上完成了成员的覆盖。若需引用Grandfather类的protectednum时,需如下操作:
在这里插入图片描述
在这里插入图片描述
方法的覆盖

首先,对方法的覆盖进行语法和规则上的说明:
		1.方法的覆盖只存在于有继承关系的类之间;
		2.子类方法名称,参数个数和类型,必须与被覆盖的父类方法一致;
		3.第二条成立,子类方法的返回值必须与被覆盖的父类方法一致;
		4.第二条成立,子类方法的修饰符不能低于被覆盖的分类方法;
		5.违反第二条,其实质是实现了方法的重载,而非覆盖;

关于instanceof

instanceof是个双目运算符,其作用是判断某个对象是否是某个类的对象。instanceof左边必须是个对象,右边必须是个类。其判断依据是若这个对象属于右边的类,或者左边的这个对象的类就是右边的类,或者左边的这个对象的类的父类属于或者就是右边这个类 则返回true 否者 返回false。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张嘉書

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值