电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

[工学]part03-java面向对象编程高级篇

37页
  • 卖家[上传人]:tia****nde
  • 文档编号:70786988
  • 上传时间:2019-01-18
  • 文档格式:PPT
  • 文档大小:645.81KB
  • / 37 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、Java程序设计,第三部分 面向对象程序设计高级篇,学习目标,理解类继承的概念以及父类和子类的关系 理解super关键字 掌握方法覆盖、多态性、动态绑定和对象的强制类型转换 理解数据字段和静态方法的隐藏 掌握修饰符:protected、final 设计和使用抽象类 掌握接口的声明和实现,Employee和Manager,public class Employee public String name; public double salary; public Date birthDate; public String getDetails() . ,public class Manager public String name; public double salary; public Date birthDate; public String department; public String getDetails() . ,继承,public class Employee public String name; public double salary; public Date b

      2、irthDate; public String getDetails() . ,public class Manager extends Employee public String department; ,父类和子类,语法 class ClassName extends Superclass class body 如果class C1 extends C2,则称C1为子类(subclass),C2为父类(superclass)。 子类继承了父类中可访问的数据和方法,子类也可添加新的数据和方法, 子类不继承父类的构造函数。 一个类只能有一个直接父类。,例 几何对象类,编写程序,父类GeometricObject,两个子类Circle和Rectangle。,Example:Circle.java, Rectangle.java, TestCircleRectangle.java,super关键字,调用父类的构造函数 super(parametersopt)调用父类的的构造函数。 必须是子类构造函数的第一条语句。 如果子类中没有显式地调用父类的构造函数,那么将自动调用父类不带参数的构造函

      3、数。 父类的构造函数在子类构造函数之前执行。 调用父类的成员 super.data super.method(parameters),方法覆盖,如果子类重新定义了从父类中继承的实例方法,称为方法覆盖(method override)。 仅当方法是可访问的实例方法时,才能被覆盖,即私有方法不能被覆盖。 静态方法不能被覆盖,如果静态方法在子类中重新定义,那么父类方法将被隐藏。 一旦父类中的方法被覆盖,则不能从子类外部访问被覆盖的方法。在子类中可以使用super引用被覆盖的方法。,Example:Circle.java, Rectangle.java, TestCircleRectangle.java,覆盖与重载,public class Test public static void main(String args) A a = new A(); a.p(10); class B public void p(int i) class A extends B public void p(int i) System.out.println(i); ,public class Test pub

      4、lic static void main(String args) A a = new A(); a.p(10); class B public void p(int i) class A extends B public void p(double i) System.out.println(i); ,Object类,java.lang.Object类是所有类的父类。如果一个类在声明时没有指定父类,那么这个类的父类是Object类。 equals方法:用于测试两个对象是否相等。Object类的默认实现是比较两个对象是否引用同一个对象。 toString方法:返回代表这个对象的字符串。Object类的默认实现是返回由类名、和hashCode组成。,多态性、动态绑定,当调用实例方法时,由Java虚拟机动态地决定所调用的方法,称为动态绑定(dynamic binding) 或为多态(polymorphism)。 假定对象o是类C1的实例,C1是C2的子类,C2是C3的子类,Cn-1是Cn的子类。也就是说,Cn是最一般的类,C1是最特殊的类。在Java中,Cn是Object类。如果调用o的方

      5、法p,Java虚拟机按照C1、C2、Cn的顺序依次查找方法p的实现。一旦找到一个实现,将停止查找,并执行找到的第一个实现。,通用编程,父类变量可以引用子类对象,针对父类对象设计的任何代码都可以应用于子类对象。 多态性允许方法使用更通用的类作为参数类型。 如果方法参数是父类,那么这个参数可以接受任何子类对象作为实参。当调用这对象的方法时,将动态绑定方法的实现。,Example:PolymorphismDemo.java,类型转换,类型转换(type casting)可以将一个对象的类型转换成继承结构中的另一种类型。 从子类到父类的转换是合法的,称为隐式转换。 m(new Student(); Object o = new Student(); m(o); 从父类到子类必须显式转换,被转换的变量所指向的对象的类型必须是转换类或它的子类。 Object o = new Student(); Student s = (Student)o; o所指向的对象必须是Student或Student子类的对象,instanceof操作符,可以用instanceof操作符判断一个对象是否是一个类的实例。表

      6、达式返回boolean值。 语法 referenceVariable instanceof TypeName,例 强制类型转换,编写程序,创建两个几何对象:圆和矩形。调用displayObject来显示结果。 如果对象是圆,显示半径和面积 如果对象是矩形,显示面积,Example:TestPolymorphismCasting.java,隐藏数据字段和静态方法,如果子类中声明的数据字段和静态方法与父类中的名称相同,那么父类中的将被隐藏(hide)。 通过super关键字访问被隐藏的数据字段和静态方法。 通过父类型的变量访问被隐藏的数据字段和静态方法。 成员访问 实例方法根据变量所引用的对象的实际类型进行访问。 数据字段和静态方法根据变量的声明类型进行访问。,Example:HideDemo.java,A x = new B();,protected修饰符,protected修饰符用于修饰数据和方法,可以被同一个包中的任何类或不同包中的子类访问。,C1,public int x protected int y int z private int u,C2中的代码可以访问x,y,z C3中

      7、的代码可以访问c1对象中的x,y,z C4中的代码可以访问x,y C5中的代码可以访问c1对象中的x,类成员的访问控制符 类的访问控制符 public:类可以被任何包中的类访问 无(package):只有同一个包中的类可以访问,访问控制符,final修饰符,final数据:常量,数据初始化后不能再修改。 final方法:最终方法,子类不能覆盖。 final类:最终类,不能派生子类。 String, StringBuffer final局部变量:数据初始化后不能再修改。,抽象类和抽象方法,Java中可以定义不含方法体的方法,方法的方法体由该类的子类根据自己的情况去实现,这样的方法称为抽象方法(abstract method),包含抽象方法的类必须是抽象类(abstract class)。 一个类C如果满足下面的任一条件,则该类包含抽象方法: 类C显式地包含一个抽象方法的声明; 类C的父类中声明的抽象方法未在类C和它的父类中实现; 类C的父接口中声明或继承一个方法,并且类C中未声明或继承一个方法来实现它。,注意,抽象类和抽象方法必须用abstract关键字来修饰。 只有实例方法可以声明为抽

      8、象方法。 抽象类不能被实例化,即不能用new关键字创建对象。 抽象类的父类可以是具体类。 具体子类必须实现抽象父类中所有抽象方法,否则子类需要声明为抽象类。,抽象类示例,Example:GeometricObject.java,Circle.java, Rectangle.java, TestGeometricObject.java,接口,接口是常量和抽象方法的集合。接口是能力、规范、协议的反映。 语法 modifier interface interfaceName constant_declaration* abstract_method_declaration* 接口中的数据字段隐含为public static final 接口体中的方法隐式地声明为public abstract,使用接口,可以在能够使用任何其他数据类型的地方使用接口。 接口类型属于引用类型,接口类型的变量可以存储: 空引用(null) 任何实现该接口的类的实例的引用 类实现接口的语法 modifier class className extends superclass implements interface

      9、NameList member_declaration* 除非类被声明为abstract,所有父接口中声明的成员方法必须被实现,或者通过在类中声明或者通过从父类继承已有的方法声明。,例1,public interface Flyer void takeOff(); void land(); void fly(); public class Airplane implements Flyer public void takeOff() / 加速直到离地升空 / 收起起落架 public void land() / 放下起落架 / 减速并降低副翼直到降落 / 刹车 public void fly() / 保持引擎运转 ,例2,例3,例4,接口继承,一个接口可以继承多个接口。 语法 modifier interface interfaceName extends interfaceNameList declaration* 如果接口声明中提供了extends子句那么该接口就继承了父接口的成员类型、方法和常量。这些接口称为声明接口的直接父接口。 任何实现该接口的类,必须实现该接口继承的其他接口。,接口和抽象类的比较,基本数据类型的包装类,作用 为基本数据类型提供方法和常量值 用于只能处理对象引用的地方 包装类的对象的值是不变的,Number,Byte,Short,Integer,Long,Float,Double,Character,Boolean,Object,构造函数与通用方法,构造函数 以一个对应的基本数据类型为参数 以字符串为参数(除了Character) 通用方法 public static Type valueOf(String str) public String toString() public type typeValue() public int compareTo(Type other) public int compareTo(Object obj) public boolean e

      《[工学]part03-java面向对象编程高级篇》由会员tia****nde分享,可在线阅读,更多相关《[工学]part03-java面向对象编程高级篇》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.