JAVA复习笔记--------类(三)继承



 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承单独的那个类即可。 多个类可以称为子类,单独这个类称为父类或者超类。子类可以直接访问父类中的非私有的属性和行为通过extends 关键字让类与类之间产生继承关系。这样做的好处是可以提高代码的复用性,有了继承的关系后,从而为产生多态的特性提供了前提。两个类之间的关系是所属关系,即is a的关系。例如:

class A{}
    class B extends A{}
    class C extends B{}
那么C是属于B的一种,B是属于A的一种。不要仅为了获取其他类中某个功能而去继承

Java只支持单继承,不支持多继承。原因是因为多继承容易带来安全隐患:当多个父类中定义了相同的功能,但是功能不同时,子类对象不确定要运行哪一个。但是Java用另外一种形式保留这种机制,那就是接口,一个接口代表了一种实现方式,Java支持多实现。

另外Java支持多层继承。当我们想要使用继承体系中的功能时,我们应该先查阅父类的描述,因为父类中定义的时该体系中的共性功能,通过了解共性功能,我们就可以知道体系的基本功能。在具体调用时,我们一般创建的是子类对象。原因是父类可能是不能实例化的类,如抽象类;同时创建子类对象可以使用更多的功能,不仅包括父类中的公有的基本功能,也包括子类中自定义的特有功能。

    继承关系的出现同时,如果有出现了子类和父类的资源名称冲突,我们该如何处理呢?这主要涉及三个方面:变量,函数,构造函数。对于变量,如果子类中出现非私有的同名成员变量时,子类要访问本类中的变量,用this;子类要访问父类中的同名变量,用super。对于函数,当子类和父类中出现了一模一样的函数时,当子类调用该函数时,会运行子类的函数的内容,如同父类的函数被覆盖了一样,相应的我们称这种特性为重写(覆盖)。显然重写和重载的功能定义是不同的。对于重写是当子类继承父类,沿袭了父类的功能时,到子类中,但是子类虽具备该功能,但是功能的内容却和父类不一致,

这时,没有必要定义新功能,而是使用覆盖特殊,保留父类的功能定义,并重写功能内容。覆盖中是子类覆盖父类,必须保证子类权限大于等于父类权限,才可以覆盖,否则编译失败。另外静态只能覆盖静态。而重载是利用参数的类型和个数的差异来区别调用哪一个构造函数,是用于初始化的。对于构造函数,在对子类对象进行初始化时,父类的构造函数也会运行,那是因为子类的构造函数默认第一行有一条隐式的语句 super(); super( )会访问父类中空参数的构造函数。而且子类中所有的构造函数默认第一行都是super();子类要访问父类的构造函数的原因是父类中的数据子类可以直接获取。所以子类对象在建立时,需要先查看父类是如何对这些数据进行初始化的,所以子类在对象初始化时,要访问一下父类中的构造函数。如果要访问父类中指定的构造函数,则需要通过super语句的方式来指定,但是super语句必须定义在子类构造函数的第一行。此处我们可以发现super和this的用法有些类似:this代表本类应用,而super代表父类引用当子父类出现同名成员时,可以用super进行区分子类要调用父类构造函数时,可以使用super语句。我们来总结下子类的实例化过程1.子类中所有的构造函数默认都会访问父类中空参数的
构造函数因为每一个构造函数的第一行都有一条默认的语句
super();2.子类会具备父类中的数据,所以要先明确父类是如何
对这些数据初始化的。3.当父类中没有空参数的构造函数时,子类的构造函数4.必须通过this或者super语句指定要访问的构造函数。
在这里我们要注意一个关键字:final。她可以修饰类,方法,变量。1.final修饰的类不可以被继承,可以避免被继承,被子类复写功能。2.被她修饰的方法不可以被重写。3.被她修饰的变量是一个常量,只能赋值一次,既可以修饰成员变量,也可以修饰局部变量。综上所述,当在描述事物时,一些数据的出现值是固定的,那么这时为了增强阅读性,都给这些值起个名字,便于阅读,而这个值不需要改变,所以加上final修饰。作为常量:常量的书写规范所有字母都大写,如果由多个单词组成,单词间用下划线连接。在上篇文档中我们说过,当内部类定义在类中的局部位置上时,只能访问该局部被final修饰的局部变量。
l

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值