关于java的继承

、理解什么是继承?为什么要有继承?
继承是面向对象的第二个特征,提出类可以划分为父类和子类的关系;
凡事父类具备的属性或行为,子类无需再次书写而是自动具备。

继承的出现即满足了复用与分离的原则,又满足的设计上的开闭原则。
我们在面向对象分析设计时,可以把共有的属性和行为一次性分析得到
然后定义在父类身上,然后把特有的属性和行为单独设计到子类身上;
这个给我们带来了设计的分析方式。

2、语法上如何实现继承?
语法:
public class 类名 extends 父类名

2-1、Java当中每个类能且只能有一个父类 — 称之为"单继承"
有些编程语言(C++)允许一个类有多个父类 — 称之为"多继承";

   单继承与多继承的对比:
   多继承的优势是类的设计的丰富度会大大增加;
          劣势是类的层次结构会呈现出一种网状的复杂形势。
   单继承的优势是类的层次结构清晰;
          劣势是丰富度被降低了。
   Java选择了单继承,是为了让类层次更清晰,然后它在语法上
   选用"接口"的多实现来弥补丰富度。

2-2、继承关系是可以进行传承的,只要在一棵继承树上,那么超类的属性和行为,
会自动被派生类具备,不管派生类在第几层。

3、语境上什么时候用继承?
在问题域当中,并不是只要有共同属性和行为就做继承,而是要找到is-a关系,
即所谓的“是一个”。

4、内存上如何实现的继承?
Java采用"内存叠加"的方式实现了继承。
Java在产生子类对象的时候,会首先调用父类的构造方法,
产生父类对象部分,然后再调用子类的构造方法,在父类部
分的下面叠加上子类特有部分,从而构成一个完整的子类对象!!!

5、方法的重写是什么?和方法的重载做一个区分?
当子类拥有父类的某个行为,但实现是特有的,那么我们应该把这个行为首先在父类中定义,
然后让子类重新实现一次,这种方式就称为“方法的重写”—Override

重写以后,并是说子类拥有了两个同名方法,而是仍然只有一个。

重写的规范要求:
1、子类方法的方法名,参数列表(个数、顺序、类型,与参数名无关)
和返回类型必须和父类中的方法保持一致;
2、子类方法的访问修饰 要么和父类方法保持一致,要么比父类方法更大;
3、子类方法不能比父类方法抛出更大范围的异常。

重载和重写的关系:
1、语法上的区分;
重载是在一个类里面有多个同名方法,参数列表不同;
重写是在有继承关系的类当中,子类把父类的方法重新实现一次;
2、场景不同:
重载是一个类;重写是多个类,且这些类要有继承关系。
举例:
人都吃饭的行为,给我筷子我夹着吃,给我刀叉我当西餐吃,什么都不给我
我当手抓饭吃。
人都有吃饭的行为,中国人用筷子吃,西方人用刀叉吃,印度人用手吃。

7、super关键字?super与this的区分
第一种用法 super() —> 调用父类的指定构造方法
作用:由于产生子类对象之前先要产生父类对象部分,那么就要调用父类构造方法;
如果父类有多个构造,那么可以通过super()调用指定的父类构造方法,匹配
方式是实参和形参的匹配。
如果子类构造不写,那么默认是无参的super(),即调用父类无参构造。
语法特点: 只能写在构造方法当中,且只能写在构造方法的第一句;
不写也有默认。

第二种用法 super. —> 后面跟属性或行为
当super.后面跟方法的时候,它是在调用父类中的该方法(重写前);
this.后面跟方法的时候,它是在调用子类中的该方法(重写后)。
如果一个方法子类并没有重写,那么this.和super.的效果是一样的;

当super.后面跟属性的时候,它是在调用父类当中定义的属性;
this.后面跟属性的时候,它既可以调用从父类继承过来,也可以调用自己定义;
只有一种情况,它们有区别,那就是父类定义了一个属性,子类又定义了一个
同名属性;这个时候super.看到的是父类中定义的属性,this.看到的是子类
中定义的属性。但这种在子类里定义和父类同名的属性是毫无意义的。因为子类
已经从父类继承了该属性,没有必要自己再重新定义一次。

结论:访问子类中的属性和行为,我们通常全部使用this;只有一种情况使用
super.,那就是在子类中调用重写方法在父类的实现。

super.能看到的this.一定能看到;
—super.由于写在子类中,所以也要受访问修饰符的影响

super.访问不到的this.有可能看到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值