- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
06_面向对象级篇
上一章我们已经了解了类的基本使用方法,对于面向对象的程序而言,它的精华在于类的继承和多态,可以以既有的类为基础,进而派生出新的类。通过这种方式,便能快速地开发出新的类,而不需编写相同的程序代码,这也就是程序代码再利用的概念。
本节将介绍继承的概念以及其实际的应用。
6.1 继承的基本概念
在讲解继承的基本概念之前,可以先想一想这样一个问题:现在假设有一个Person类,里面有name与age两个属性,而另外一个Student类,需要有name、age、school三个属性,如图6-1所示,从这里可以发现Person中已经存在有name和age两个属性,所以不希望在Student类中再重新声明这两个属性,这个时候就需要考虑是不是可以将Person类中的内容继续保留到Student类中,也就是引出了接下来所要介绍的类的继承概念。
图6-1 Person与Student的继承关系
java中一个类只能继承于另一个类。我们将被继承的类称之为父类(基类),继承类称之为子类(派生类)。在java中用关键字extends来实现单继承,Java类的继承,可用下面的语法来表示:
class 父类 // 定义父类
{
}
class 子类 extends 父类 // 用extends关键字实现类的继承
{
}
需要注意的是:实现继承关系的类之间有着必然的联系,不能将不相关的类实现继承。比如:人类不能继承自鸟类。
范例:TestPersonStudentDemo.java
class Person
{
String name;
int age;
}
class Student extends Person
{
String school;
}
public class TestPersonStudentDemo
{
public static void main(String[] args)
{
Student s = new Student();
s.name = 张三; // 访问Person类中的name属性
s.age = 25; // 访问Person类中的age属性
s.school = 北京大学; // 访问Student类中的school属性
System.out.println(姓名:+s.name+,年龄:+s.age+,学校:+s.school);
}
}
输出结果:
姓名:张三,年龄:25,学校:北京大学
程序说明:
1、程序1~5行声明一个名为Person的类,里面有name与age两个属性。
2、程序第6~9行声明一个名为Student的类,并继承自Person类。
3、程序第14行声明并实例化一个Student类的对象
4、程序第15~17行分别用Student类的对象调用程序中的name、age、school属性。
由上面的程序可以发现,在Student类中虽然并未定义name与age属性,但在程序外部却依然可以调用name或age,这是因为Student类直接继承自Person类,也就是说Student类直接继承了Person类中的属性,所以Student类的对象才可以访问到父类中的成员。以上所述,可用图6-2表示:
图6-2 Person与Student类的继承图
再举个例子:
假设我们开发某公司的员工管理系统,已知类Manager和类Employee,代码如下:
class Employee {
public String name; //姓名
public int work_age; //工龄
public float salary = 0.0f; //薪水
public String getEmpDetails() //员工信息
{....}
}
class Manager {
public String name; //姓名
public int work_age; //工龄
public float salary; //薪水
public String dept; //职位
public String getEmpDetails()//员工信息
{....}
}
通过分析得知,在类Employee和类Manager中存在许多共同的属性和行为,在现实生活中,Manager是公司Employee之一。因此,我们可以将Manager类定义成Employee类的子类,修改类Manager如下:
class Manager extends Employee {
public String dept; //职位
public String getEmpDetails() {
return Th
原创力文档


文档评论(0)