JAVA入门基础文章3-类的概念-什么是继承
来源:互联网 发布:成都电视台网络直播 编辑:程序博客网 时间:2024/05/17 09:29
类的继承是一个及其重要的概念。
什么是类的继承?
继承就是从已有的类中派生出新的类,让新类拥有父类中已经有的东西,比如属性、方法等。
用一个例子说话。
前面一直用的一个类:Person。它代表了“人”
我们还可以定义很多本质上是“人”的类,比如:中国人、老师、工人、学生、母亲、女儿 ….. 不胜枚举。
这些东东,都可以继承与“人”,因为他们有拥有“人”的属性,比如:姓名、年龄、性别、爱好。
下面以老师为例子,我们再定义一个类:
public class Teacher{ private String name; private int age; private String sex; private String favorite; private String emp_code;//教师编号 private String zhicheng;//职称 private String course;//教学课程 //接下来写一堆set/get方法,用于访问属性。为了节省篇幅,我就不写了 //定义了一个方法:向别人介绍自己 public void introduceToSomeone(String someone){ System.out.println("hello " + someone + ", my name is " + this.name + ", I like " + this.favorite); System.out.println("I have working 10 years, and my age is " + age); System.out.println("I am teaching " + course); }}
现在仔细看看这个类,它里面很多属性是不是和Person里面的属性一样,比如都有name/age/sex/favorite。
因为老师本质上是一个人,所以,人有的属性,老师当然应该同样拥有。
从代码的角度上,有什么办法能让“老师”“继承”于“人”,从而拥有人的属性,这样老师就不用重复编写这些代码了呢
这个办法就是使用JAVA里面的“继承”:
public class Teacher extends Person{ private String emp_code;//教师编号 private String zhicheng;//职称 private String course;//教学课程 //接下来写一堆set/get方法,用于访问属性。为了节省篇幅,我就不写了 //定义了一个方法:向别人介绍自己 public void introduceToSomeone(String someone){ sayHi(someone); System.out.println("I have working 10 years, and my age is " + age); System.out.println("I am teaching " + course); }}
看看修改后的代码,与原来的代码有什么区别。
仔细看,一共有三处区别。
……
……
……
……
……
……
等着你琢磨这些区别……
……
……
……
……
……
……
现在,告诉我,这三处不同是什么?
实际上,如果你把这段代码放到eclipse中,会出现一个错误:The field Person.age is not visible。
你再琢磨一下,这个错误提示的用词为什么是这样的
……
……
……
你可以暂时先把这一行注释掉,然后用RunClass来调用Teacher这个类,运行一下,看看是什么结果。
//把main方法修改成下面的代码来运行public static void main(String[] arg){ Teacher teacher = new Teacher(); teacher.introduceToSomeone("小明");}
记得,运行之前,要把Teacher类里面的get/set方法都写进去。
顺便说一下可以使用eclipse这个工具,快速生成这些get/set方法,如下图:
(1)点Source下的Genarator Gettors and Settors
(2)选中这几个属性,点OK,即可。
现在你看到运行结果了,但是,运行结果中有很多null,先不管null是啥东西,总之,这个运行结果不是你希望的。
我们先做如下修改,然后再讲原因。
1)把Person类中的属性前面的private修改为protected
2)把introduceToSomeone方法中,原来因为错误注释掉的一行打开(现在不会再有错误了)
3)把RunClass的main方法改的饱满一些:
public static void main(String[] arg){ Teacher teacher = new Teacher(); teacher.setName("helen"); teacher.setAge(30); teacher.setFavorite("落基山露营看星星"); teacher.setCourse("英语"); teacher.introduceToSomeone("小明");}
运行一下看看结果。
至此,通过代码,我们写了一个继承自Person的类Teacher,也运行了程序,看到了结果。
同时,你大约会有如下疑问:
1、能不能再总结一下,继承是什么
2、突然冒出来的protected是什么东西
解释来了:
1、继承是什么
继承就是让一个类,通过extends关键字,自动拥有另外一个类中已经有的东西。
Teacher类通过继承Person类自动拥有了Person类中如下东西:
1)它自己的代码里面没有name、age等属性,但是它仍然能使用这些属性,就象自己的代码中已经写了一样
2)它自己的代码里面没有sayHi这个方法,但是它也可以在代码中直接使用sayHi这个方法,就象自己的代码中已经写了一样
这就是继承的神奇之处!
2、突然冒出来的protected是什么东西
在前面一个课程中,已经介绍了两个东东:
- private:私有的
- public:公开的
- 通过这些关键字,定义类里面的属性或方法以怎样的形式在代码中被访问。
类似的,protected的作用是,对自己儿孙类们(就是继承于自己的类)是公开可被访问的,对外人(其他各种类)是私有的不可被访问。
Person类中的属性,原来是private,意味着这些属性仅仅能被自己使用,当修改为protected后,就可以被他的继承者Teacher类访问了。
最后留个作业:写一个叫“数学老师”的类,继承与Teacher类,看看你能写出来一个什么样的代码。
- JAVA入门基础文章3-类的概念-什么是继承
- JAVA入门基础文章1-类的概念
- JAVA入门基础文章2-类的概念(继续深入点)
- Java入门-基础概念
- Java基础入门-继承
- Java继承的概念
- Java基础之面向对象的概念 继承---组合----枚举类
- 什么是类的继承
- java 基础 类的继承
- Java基础---类的继承
- iOS概念入门学习-OC-类的继承和派生
- Java中继承的概念
- C++学习笔记4-----类的继承基础概念
- java入门基础--方法的多样性(继承与覆盖)
- 什么是软件工程-基础概念
- java 继承的基础
- java继承的基础
- 基础的Java继承
- mysql实现行转列的两个方式
- Remove Duplicates from Sorted Array
- 黑马程序员-集合的概述-List
- import-module的注意事项与NDK_MODULE_PATH的配置
- java中,数值型Double运算出错问题
- JAVA入门基础文章3-类的概念-什么是继承
- 文本文件解析
- Java比较String ==和equals() 解析
- 这样的人注定生活在社会最底层
- JavaWeb 全站乱码过滤
- 个人主页常见的头像与背景图不同步移动的下拉效果实现
- CF 550C 数学 or dp
- window.open 打开子窗口,关闭所有的子窗口
- 黑马程序员--学习OC类方法