- 1、本文档共42页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
6.1.1 final修饰变量 用final修饰的变量包括类的成员变量、方法的局部变量和方法的参数。一个变量如果用final修饰,则该变量为常值变量,一旦赋值便不能改变。 FinalDemo.java 6.1.1 抽象类 6.1.1 抽象类和抽象方法 假设要开发一个图形绘制系统,需要定义圆(Circle)类、矩形(Rectangle)类和三角形(Triangle)类等,这些类都需要定义求周长和面积的方法,这些方法对不同的图形有不同的实现。 设计一个更一般的类,比如几何形状(Shape)类,在该类中定义求周长和面积的方法。由于Shape不是一个具体的形状,这些方法就不能实现,因此要定义为抽象方法(abstract method)。 6.1.1 抽象类和抽象方法 抽象类(abstract class)是包含抽象方法的类,使用abstract修饰。 抽象方法(abstract method)是只有声明,没有实现的方法,使用abstract修饰。 抽象类不能被实例化,下面语句是错误的: Shape sh = new Shape(); 6.1.1 课堂讨论及训练 定义Rectangle类表示矩形,实现Shape类,实现其中的getPerimeter()方法和getArea()方法。 6.1.1 对象转换与多态 6.1.1 对象转换 术语:子类型和父类型 子类定义的类型称为子类型,而父类(或接口)定义的类型称为父类型。 可以说Circle是Shape的子类型,Shape类是Circle的父类型。 6.1.1 对象转换 子类对象和父类对象在一定条件下可以相互转换,这种转换一般称为对象转换或造型(casting)。 对象转换分为: 1)自动转换 upcasting 向上转换 2)强制转换 向下转换, 使用()运算符 6.1.1 自动转换(向上转换): 子类对象可以自动转换为父类对象。可以将子类型的引用赋值给父类型的引用。 自动转换: Employee emp = new Employee(“刘明”,30,5000); Person p = emp; Person Employee Object 自动转换 Object obj = emp; 对象转换 6.1.1 强制转换(向下造型): 将父类对象强制转换为子类对象。用“()”运算符。将父类型的引用赋值给子类型的引用。 强制转换: Employee emp = new Employee(“刘明”,30,5000); Person p = emp; emp = (Employee) p; Person Employee Object 强制转换 强制转换 对象转换 6.1.1 注意,不是任何情况下都可以进行强制类型转换,请看下面代码: 不正确的强制转换: Person p = new Person(); Employee emp = (Employee) p; 代码编译时没有错误,但运行时会抛出ClassCastException异常。 Person Employee Object 强制转换 对象转换 6.1.1 instanceof运算符用来测试一个实例是否是某种类型的实例,这里的类型可以是类、抽象类、接口等。 格式为: variable instanceof TypeName Employee emp = new Employee(“刘明”,30,5000); System.out.println(emp instanceof Employee); instanceof运算符 6.1.1 fruit instanceof Orange fruit instanceof Fruit orange instanceof Fruit Fruit fruit = new Apple(); Orange orange = new Orange(); orange instanceof Apple 如果一个实例是某种类型的实例,那么该实例也是该类型的所有父类型的实例。 fruit instanceof Object instanceof运算符 6.1.1 多态(polymorphism)就是多种形式,它是指Java程序中一个类或多个类中可以定义多个同名方法,这多个同名方法完成的操作不同,这就是多态。 Java语言支持两种类型的多态: 1)静态多态:也叫编译时多态,它通过方法重载实现。 2)动态多态:也叫运行时多态,它通过方法覆盖实现。 多态与动态绑定 6.1.1 方法绑定:将方法调用与方法体关联起来称方法绑定(bindin
文档评论(0)