一、Java继承
1.继承的概念
继承是Java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承就是子类继承父类的特征与行为,使得子类对象(实例)具有父类的实例域和方法,或是子类从父类继承方法,使得子类具有父类相同的行为。当子类具有父类当中的属性和方法后,子类就不会存在重复的代码,维护性也提高,代码也更加简洁,提高了代码的复用性。
2.继承的类型和特性
(1)继承的类型
Java不支持多继承,但是支持多重继承。
(2)继承的特性
Ⅰ.子类拥有父类非private的属性和方法。
Ⅱ.子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
Ⅲ.子类可以用自己的方式实现父类的方法。
Ⅳ.Java的继承是单继承,但是可以多重继承。
Ⅴ.提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)。
3.继承关键字
继承可以使用extends和implements这两个关键字来实现继承,而且所有的类都是继承于java.lang.Object,当一个类没有继承的两个关键字时,则默认继承object祖先类。在Java中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类,所以extends只能继承一个类。使用implements关键字可以变相的使java具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口(接口与接口之间采用逗号分隔)。
可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类,this关键字指向自己的引用。
Final关键字声明类可以把类定义为不能继承的,即最终类;或者用于修饰方法,该方法不能被子类重写。
4.构造器
子类是不继承父类的构造器(构造方法或者构造函数)的,它只是调用(隐式或显示)。如果父类的构造器带有参数,则必须在子类的构造器中显式地通过super关键字调用父类的构造器并配以适当的参数列表。如果父类构造器没有参数,则在子类的构造器中不需要使用super关键字调用父类构造器,系统会自动调用父类的无参数构造器。
运行结果如下:
二、Java重写(Override)与重载(Overload)
1.重写(Override)
重写是子类对父类的允许访问的方法的实现过程进行重新编写,返回值和形参都不能改变。即外壳不变,核心重写。重写的好处在于子类可以根据需要,定义特定于自己的行为。也就是说子类能够根据需要实现父类的方法。重写方法不能抛出新的检查异常或者比被重写方法声明更加宽泛的异常。
在上面的例子中,尽管b属于Animal2类型,但是它运行的是Dog1类中的move方法。这是由于在编译阶段,只是检查参数的引用类型,然而在运行时,Java虚拟机(JVM)指定对象的类型并且运行该对象的方法。因此在上面的例子中,之所以能编译成功,是因为Animal2类中存在move方法,然而运行时,运行的是特定对象的方法。
重写规则:参数列表与被重写方法的参数列表必须完全相同;返回类型与被重写方法的返回类型可以不相同,但是必须是父类返回值的派生;访问权限不能比父类中被重写的方法的访问权限更低;父类的成员方法只能被它的子类重写;声明为final的方法不能被重写;声明为static的方法不能被重写,但是能够被再次声明;子类和父类在同一个包中,那么子类可以重写父类的所有子类,除了声明为private和final的方法;子类和父类不在同一个包中,那么子类只能够重写父类声明为public和非final方法;重写的方法能够抛出任何非强制异常,无论被重写的方法是否抛出异常;构造方法不能被重写;如果不能继承一个方法,则不能重写这个方法。
2.重载(Overload)
重载是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。每个重载的方法都必须有一个独一无二的参数类型列表。
重载规则:被重载的方法必须改变参数列表;被重载的方法可以改变返回类型;被重载的方法可以改变访问修饰符;被重载的方法可以声明新的或更广的检查异常;方法能够在同一个类中或者在一个子类中被重载;无法以返回值类型作为重载函数的区分标准。
3.重写与重载之间的区别
| 区别点 |
重载方法 |
重写方法 |
| 参数列表 |
必须修改 |
一定不能修改 |
| 返回类型 |
可以修改 |
一定不能修改 |
| 异常 |
可以修改 |
一定不能抛出新的或更广的异常 |
| 访问 |
可以修改 |
一定不能做更严格的限制 |
3.总结
方法的重写(Override)和重载(Overload)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现方式
(1)方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或者数量相同而类型和次序不同,则称为方法的重载。
(2)方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写。
(3)方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。
三、Python数据分析工具
1.Numpy
Python并没有提供数组功能,虽然列表可以完成基本的数组功能,但它不是真正的数组,而且在数据量较大时,使用列表的速度就会慢的让人难以接受。为此,Numpy提供了真正的数组功能,以及对数据进行快速处理的函数。
2.Scipy
如果说Numpy让Python有了Matlab的味道,那么Scipy就让Python真正地成为了半个Matlab了。Numpy提供了多维数组功能,但它只是一般的数组,并不是矩阵。Scipy提供了真正的矩阵,以及大量基于矩阵运算的对象和函数。
3.Matplotlib
第一次总结学习时就已经简单的学习过了这个著名的绘图库,它主要用于二维绘图,它不但提供了一整套和Matlab相似但更为丰富的命令,让我们可以非常快捷地使用Python可视化数据,而且允许输出达到出版质量的多种图像格式。
运行结果如下:
4. Pandas
Pandas是Python下最强大的数据分析和探索工具之一,它包含高级的数据结构和精巧的工具,使得Python中处理数据非常快速和简单。Pandas的功能非常强大,支持类似于SQL的数据增、删、改、查,并且带有丰富的数据处理函数;支持时间序列分析功能;支持灵活处理缺失数据等。