前言
小编很诚实,这一期我不会期望有啥阅读量!本文主要梳理一下国外大学中大一计算机Java课里面的部分核心概念,希望各位不喜勿喷!在新西兰的的八所大学里,目前只有小编读的奥塔哥大学会在大一计算机的课程中设置Java语言的课,当然了,Python是也有的。
很多母语非英语的同学在读这类编程课程的时候,往往会比较吃力,尤其是在没有任何编程语言直接学Java的情况下,会异常的难以消化课程知识。
本期,小编带领大家(估计只有部分读者了)走进Java语言的核心,也就是面向对象(Object-orinted)的体现之继承。
继承(Inheritance)
继承是面向对象语言们的基石,因为它允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
在我们日常的生活中有很多的例子,比如下图:
兔子和羊属于食草动物类,狮子和豹属于食肉动物类。食草动物和食肉动物又是属于动物类。所以继承需要符合的关系是:is-a,父类更通用,子类更具体。虽然食草动物和食肉动物都是属于动物,但是两者的属性和行为上有差别,所以子类会具有父类的一般特性也会具有自身的特性。
类的继承格式当然是十分重要的,在Java中通过" extends " 关键字可以声明一个类是从另外一个类继承而来的,具体的体现如下:
class 父类 {}class 子类 extends 父类 {}
到这里可能很多人会问,我们为什么需要继承?继承的意义是如何体现的呢?接下俩小编就来为大家通过实例来证明这个需求!
开发“人”类,其中人分别为Tom和Jerry,要求如下:
· Tom: 属性(姓名,id),方法(学习,睡觉,自我介绍)
· Jerry:属性(姓名,id),方法(学习,睡觉,自我介绍)
Tom类的代码如下:
public class Tom { private String name; private int id; public Tom(String myName, int myid) { name = myName; id = myid; } public void study(){ System.out.println(name + " is studying"); } public void sleep(){ System.out.println(name + " is sleeping"); } public void introduction() { System.out.println("Hello! I am " + name + " and my id is "+ id + "."); }}
Jerry类的代码如下:
public class Jerry { private String name; private int id; public Tom(String myName, int myid) { name = myName; id = myid; } public void study(){ System.out.println(name + " is studying"); } public void sleep(){ System.out.println(name + " is sleeping"); } public void introduction() { System.out.println("Hello! I am " + name + " and my id is "+ id + "."); }}
到现在,我们就能看出来以上两段代码有着大量重复,后果更是显而易见的,代码会很大且臃肿,最关键的问题是后期的维护会相当麻烦,而且十分容易出错!要解决这些问题的方法十分简单,就是使用继承,换句话说就是将以上两段代码中相同的部分提取出来组成一个父类。
公共父类代码如下:
public class Human { private String name; private int id; public Tom(String myName, int myid) { name = myName; id = myid; } public void study(){ System.out.println(name + " is studying"); } public void sleep(){ System.out.println(name + " is sleeping"); } public void introduction() { System.out.println("Hello! I am " + name + " and my id is "+ id + "."); }}
这个时候,上面代码中的Human类就可以作为一个父类,然后Tom类和Jerrry类继承了这个类之后,就具有了父类中的属性和方法!随后,子类中便不会出现重复的代码了,好处也是十分明显的,比如代码简洁性大大提高,维护也要容易很多,也同时提升了代码的复用性。
继承后的代码如下:
public class Tom extends Human { public Tom (String myName, int myid) { super(myName, myid); }}
public class Jerry extends Human { public Jerry (String myName, int myid) { super(myName, myid); }}
有关于Java继承的类型如下,需要注意的是Java不支持多继承!
肯定有人会问,那在Java里是如何实现多继承的呢?答案很简单,可以通过接口来实现!换句话说就是使用" implements "关键字。这个关键字可以变相的让Java具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口,在这里需要注意的是,接口与接口之间必须使用逗号分隔。
implements关键字代码示例:
public interface A { public void study(); public void sleep();}public interface B { public void show();}public class C implements A,B {}
在这里需要特别强调的是,“ final "关键字声明类可以把类定义为不可继承的,即最终类;或者用于修饰方法,但该方法不能被子类重写!
声明类:final class 类名 {类体}
声明方法:修饰符(public/private/default/protected) final返回值类型 方法名(){方法体}
本期结语
本期有关于Java语言中的继承这个概念的讲解就先到此啦!