学习目标:
1、了解Java的历史
2、为什么要学习Java语言
3、端正学习态度
学习过程:
一、什么是继承
在面向对象的抽象思维中复用是一个非常重要的理念。我们可以通过封装方法来复用,不过在面向对象中还可以通过继承实现复用。通过抽象出公共部分封装到一个类中,我们成为父类,再声明一系列有同样操作行为的类去继承他,彼此形成父子的层次关系。这样的设计非常有用,也跟现实世界的事物非常之贴近。
我们可以很容易举出很多例子,比如我们小学时候学过的生物知识,如下图所示:
简单点来画:
当然我更喜欢这样画:
可以看出子类是对父类的扩充,子类包含了父类的属性和方法(当然不是全部,以后再说)。
二、继承有什么作用
这样组织类之间的关系有什么好处呢。从上面的图示我们可以总结如下:
1、具有层次结构
2、子类继承了父类的属性和方法,父类的属性和方法可用于子类
3、代码的可重用性
4、可以轻松地自定义子类
5、设计应用程序变得更加简单
三、java如何实现继承
我们就按照上面的图示建立先建立一个动物类Animals
1 2 3 4 5 |
|
我们可以通过extends关键字实现继承关系,我们可以新建一个Carnivorous类,继承上面的Animals类
1 2 3 4 5 6 7 |
|
再建立一个Herbivorous类,也可以继承Animals类
1 2 3 4 5 6 7 |
|
我们要注意的是java是单继承的,这一点可以和C++语言对比一下,C++是多继承的。单继承就是只能继承一个父类,不可以有多个父类。一个父类可以派生很多子类,这点和我们的现实世界一样,比较每个人都只有一个父亲,但是一个父亲可以有很多儿子(计划生育的除外)。
我们在Animals类中定义几个属性、普通方法和一个显示的构造方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
再建立一个Run类,在Run类中我们先构造一个Carnivorous类的对象。然后运行。
1 2 3 4 5 |
|
控制会先输出父类的构造方法,也就是说在构造对象时会先调用父类构造方法,再调用子类构造方法。
然后我们可以直接使用在Animals类中定义的属性和方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
当然我们可以在子类中定义属于自己的方法,如果我们想要在子类中使用父类的方法也可以使用super关键字。
1 2 3 4 5 6 7 8 9 10 11 12 |
|
四、Object类
java中Object是所有java类(包括自定义类)的父类。Object类是所有Java类的祖先。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。在不明确给出超类的情况下,Java会自动把Object作为要定义类的超类。可以使用类型为Object的变量指向任意类型的对象。
我们可以在Run类中定义Animals类的对象,Animals类虽然没有继承任何类,但是会继承Object类。所有Run类可以调用Object中的方法。
1 2 3 4 |
|