网站大量收购独家精品文档,联系QQ:2885784924

第五讲java面向对象程序设计3.ppt

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五讲java面向对象程序设计3.ppt

第5讲 Java面向对象程序设计(三) 复习 类,类成员,构造方法,对象的创建与使用,方法的重载,参数传递。 本讲内容 变量的作用域 类的继承 方法的覆盖 多态 变量的作用域(初步) 变量的分类: 类的成员变量/成员域 方法的参数变量 语句块(含方法体)内定义的局部变量 变量的作用域:变量的有效使用范围 全局:变量在任何语句中均可以有效使用 类作用域:变量在定义它的类及其子类内部的任何语句都能有效访问 语句块:变量在定义它的语句块内可以被有效访问。 变量的作用域(续) 变量的作用域 静态成员变量的作用域是全局域。这类变量在任何类的语句中均可以有效使用。 非静态成员变量的作用域是类作用域。变量能被定义它的类及其子类内部的任何语句有效访问。 方法参数变量和在语句块中定义的变量的作用范围是定义他们的语句块。变量在定义它的语句块内可以被有效访问。(参数所在的语句块是整个方法) 继承的概念 “龙生龙、凤生凤、老鼠生儿会打洞”,说的就是继承。 生的是“父”,被生的是“子” “子”能够具有“父”的性质 “子”能够对“父”的性质进行扩展。 类的继承 在面向对象的程序设计中,继承被用来实现程序的“复用”。以提高程序设计的效率。 如: 已经定义了一个类“Employee”,现在想定义一个类Manager,因为Manager也是一个Employee,我们就可以让Manager继承Employee。这样在编写Manager类时就不用重复与Employee相同的代码了,只需编写Manager类特有的新的代码。 不用继承的情况 如果不用继承,我们必须这样编写Manager类 Java中怎么实现继承 Java中,使用extends来指定继承。以下是用继承编写Manager类的例子(Employee父类、Manager子类) 所有类都是Object的子类 Java中预先定义了一个类Object。这个类没有父类,它定义了所有类公用的一些属性和方法。 我们在编写类时如果没有加extends,Java编译器会自动加上extends java.lang.Object 类的继承具有传递性。即A继承B,B继承C,则A也继承了C。C也是A的父类。 因此,所有java类都是Object的子类。 类继承的注意事项 子类继承父类的成员变量和成员方法,只需声明子类特有的东西。 带private 修饰符的属性、方法不能被继承。 构造方法不能被继承。在子类的构造方法中必须首先调用父类的构造方法,调用格式为super(参数列表)。 如果子类的构造方法没有显式调用父类的构造方法,则编译器会自动加上super()。此时若父类中没有无参数的构造方法,则编译器汇报错。 父类与子类的类型转换 子类可自动转换为父类 如: Employee e=new Manager(); 父类需要强制类型转换为子类 如: Manager m=(Manager)new Employee(); 父类与子类类型转换引出的问题 子类对象转换成父类对象后,能否调用子类特有的方法?不能 父类对象转换成子类对象后,能否调用子类特有的方法?子类对象存入父类变量后可以转回子类,之后可以调用子类的方法 举例演示回答上述问题 试一试 用Civics类来定义Student类,增添学号、专业属性和学习方法 class Civics { int id; String name; String gender; public Civics(int id,String name,String gender) { this.id=id; this.name=name; this.gender=gender; } public void tellInfo() { System.out.println(“My name is “+name+”. I am a “+gender+”.”); } public void work() { System.out.println(“I am working!); } } Java的单继承 Java是单继承的,即一个类只能有一个直接父类,extends后只能跟一个类名。 单继承的优点: 代码更可靠 缺点 缺乏灵活性 补救:类可以实现多个接口,达到多继承效果 问题: 学生类继承了公民类,但公民类的work方法是干活,学生类的work方法是学习。怎么改变学生类的work方法? 方法覆盖(override) 子类的方法和父类的方法同名,返回类型相同,参数个数和类型也相同,但方法的实现不同(做不同的事情)。 方法覆盖的规则 返回类型相同,参数个数和类型也相同。 方法的访问权限不能缩小。 不能抛出新的例外。 现在,解决前面的问题! 父类与子类类型转换引出的问题

文档评论(0)

天马行空 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档