上节课我们学习了java面向对象的封装,相信很多人已经学会怎么创建一个对象类,并为其封装属性方法啦。
当然,这些需要慢慢练习理解。现在学会基本思路和方法就可以了。
除了面向对象的封装技术,面向对象还提供一种技术,称为继承。
今天的内容:
1、继承是什么?
2、继承有什么特点?
3、如何实现继承?
4、重写
第一部分:继承
继承,如何理解他呢?其实也非常简单。
例如,你是继承了父母的基因的。在你父母基因的基础上,你肯定也有自己的独特基因。你和父母之间存在继承关系。
这种关系一旦存在,基因的相似性是必然的,不可替换的。总结来说,你的基因=父母基因+你自己的基因。
那么,继承可以解决的问题也就是对象的丰富性和扩展性。
比如,自然界有很多的对象存在共性,我们可以把这些共性的东西拿出来作为一个基类。
那么,在表示一个具体的对象时,我们只需要在共性的基础上加入不同的特性就能达到目的,不用再定义他和其他对象的共性。
举例来说,男人和女人都是人,我们可以把这两个对象的共性抽象出来,放在一个公共的父类:人 里。
当我们再定义男人或女人时,只需要继承这些共性,加入男人和女人的特性就可以啦。
我们给继承下个定义:
继承(Inheritance)是一种联结类与类的层次模型。继承性是指特殊类的对象拥有其一般类的属性和行为。
继承意味着“自动地拥有”,即特殊类中不必重新定义已在一般类中定义过的属性和行为,而它却自动地、隐含地拥有其一般类的属性与行为。
第二部分:继承的特点
继承的特点:
1、继承父类后,子类自动拥有父类的所有属性和方法
2、继承父类后,子类只能使用父类开放的属性和方法。
3、继承是单一的。一个类只能继承一个父类。
4、子类可以重写父类的方法。
5、子类不能继承父类的final方法。
第三部分:继承的实现
在java中,如何实现类与类的继承呢?
需要在定义类时使用extends关键字。
我们看看语法:
class SubClass extends ParentClass{}
我们用个例子看看。。
从这个例子可以看出,我定义的子类Son里没有编写任何方法,但是可以使用继承了父类Parent的setName和say方法。
同时,父类的属性name也再say方法里可以直接使用。因为继承了父类后,自动的拥有了父类的属性和方法。
所以说,继承的实现也非常简单。但是,想用好继承,却需要大量的实践和理解。
第四部分:重写
我们上面提到了,子类可以重写父类的方法。
特别注意的是,虽然只能使用父类开放的方法,但是可以重写父类的所有方法。
那么,到底什么是重写?
我们举个例子看看。
class Parent{
private void say(){
System.out.println("aa");
}
}
class Son extends Parent{
private void say(){
System.out.println("son");
}
public void publicSay(){
say();
}
}
如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。
因为在java当中,方法的名称和参数组成了方法的签名。和返回类型无关。
另外,需要注意的点是:重写时,访问权限控制符的范围只可以保持或增大,不能缩小。
访问权限控制符的范围从小到大:private->默认->protected->public
如此以来,我们如果在子类中,发现父类的某些方法并不适合子类,可以随时进行重写,使其满足子类的行为。
提升了继承的可扩展性。
以上,就是今天的内容:
1、继承是什么?
2、继承有什么特点?
3、如何实现继承?
4、重写
你学会了吗?