欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    Java程序设计课件Java程序设计 (4).pdf

    • 资源ID:52831851       资源大小:1.88MB        全文页数:104页
    • 资源格式: PDF        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Java程序设计课件Java程序设计 (4).pdf

    Java语言程序设计(第2版)第 4 章 类的重用BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRC+语言程序设计(第4版),郑莉,清华大学2BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学目录 3.1 类的继承 3.2 Object类 3.3 终结类与终结方法 3.4 抽象类 3.5 泛型 3.6 类的组合3BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学类的继承 如何充分重用已有的设计和实现,在已有类的基础上设计新的类?继承已有类的全部属性和行为,在此基础上改造、扩展4BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学Object类 所有Java类的直接或间接超类。如果一个类没有继承任何超类,那么就隐含直接继承了Object类5BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学终结类与终结方法 有些类,或类的方法从安全的角度或者算法的角度不希望被修改,就可以设为终结类、终结方法 终结类不可以被继承(扩展)终结方法不可以被覆盖6BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学抽象类 如果希望统一规定整个类家族的共同属性和行为,但是又没有统一抽象的行为实现,就可以声明一个抽象超类,包括所有需要子类具有的属性和实现的方法,在超类中无法实现的方法就声明为抽象方法,留待子类各自去实现。由于抽象类中允许有未实现的方法,因此不能生成对象,只能当做超类使用,主要是为了设计的目的和隐藏实现细节7BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学泛型 不仅数据可以作为参数,类型也可以作为参数。使用类型参数,可以使程序更为通用,适用于处理不同类型的数据 这就是泛型8BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学类的组合 组合是另一种类重用机制部件组装的思想 在声明一个新的类时,用已有类的对象作为成员9BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRC+语言程序设计(第4版),郑莉,清华大学 这就是第3章将要学习的主要内容10结束语BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRC+语言程序设计(第4版),郑莉,清华大学、11BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学类继承的概念 一种由已有的类创建新类的机制,是面向对象程序设计的基石之一12BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学类继承的概念 根据已有类来定义新类,新类拥有已有类的所有功能 Java只支持类的单继承,每个子类只能有一个直接超类 超类是所有子类的公共属性及方法的集合,子类则是超类的特殊化 继承机制可以提高程序的抽象程度,提高代码的可重用性13BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学超类和子类 超类(superclass)也称基类(base class)是被直接或间接继承的类 子类(subclass)也称派生类(derived-class)继承其他类而得到的类 继承所有祖先的状态和行为 派生类可以增加变量和方法 派生类也可以覆盖(override)继承的方法14BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学超类和子类 子类对象与超类对象存在“是一个.”(或“是一种.”)的关系15BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学子类对象 从外部来看,它应该包括 与超类相同的接口 可以具有更多的方法和数据成员 其内包含着超类的所有变量和方法16BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学17继承的语法BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学继承的语法ClassModifier class ClassName extends SuperClassName/类体18BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学类继承举例 设有三个类:Person,Employee,Manager。其类层次如图:19PersonEmployeeManagerBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR例:类继承public class Person public String name;public String getName()return name;public class Employee extends Person public int employeeNumber;public int getEmployeeNumber()return employeeNumber;public class Manager extends Employee public String responsibilities;public String getResponsibilities()return responsibilities;BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR例:类继承public class Exam4_2Test public static void main(String args)Employee li=new Employee();li.name=Li Ming;li.employeeNumber=123456;System.out.println(li.getName();System.out.println(li.getEmployeeNumber();Manager he=new Manager();he.name=He Xia;he.employeeNumber=543469;he.responsibilities=Internet project;System.out.println(he.getName();System.out.println(he.getEmployeeNumber();System.out.println(he.getResponsibilities();运行结果Li Ming123456He Xia543469Internet projectBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR例:访问从超类继承的成员子类不能直接访问从超类中继承的私有属性及方法,但可使用公有(及保护)方法进行访问public class B public int a=10;private int b=20;protected int c=30;public int getB()return b;public class A extends B public int d;public void tryVariables()System.out.println(a);/允许System.out.println(b);/不允许System.out.println(getB();/允许System.out.println(c);/允许 22BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRC+语言程序设计(第4版),郑莉,清华大学 这一节我们学习了类继承的概念、语法,并通过简单的例题观察了如何从一个已有的类派生出辛德雷。23结束语BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRC+语言程序设计(第4版),郑莉,清华大学子类对从超类继承来的属性变量及方法可以重新定义24BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学属性的隐藏25BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学属性的隐藏 子类中声明了与超类中相同的成员变量名 从超类继承的变量将被隐藏 子类拥有了两个相同名字的变量,一个继承自超类,另一个由自己声明 当子类执行继承自超类的操作时,处理的是继承自超类的变量,而当子类执行它自己声明的方法时,所操作的就是它自己声明的变量26class Parent Number aNumber;class Child extends Parent Float aNumber;BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学访问被隐藏的超类属性 调用从超类继承的方法,则操作的是从超类继承的属性 本类中声明的方法使用“super.属性”访问从超类继承的属性27BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR例:属性的隐藏class A1 int x=2;public void setx(int i)x=i;void printa()System.out.println(x);class B1 extends A1 int x=100;void printb()super.x=super.x+10;System.out.println(super.x=+super.x+x=+x);public class Exam4_4Test public static void main(String args)A1 a1=new A1();a1.setx(4);a1.printa();B1 b1=new B1();b1.printb();b1.printa();b1.setx(6);/将继承x值设置为6b1.printb();b1.printa();a1.printa();运行结果:4super.x=12 x=10012super.x=16 x=100164BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR例:访问超类静态属性class A static int x=2;public void setx(int i)x=i;void printa()System.out.println(x);class B extends A int x=100;void printb()super.x=super.x+10;System.out.println(super.x=+super.x+x=+x);29public class Tester public static void main(String args)A a1=new A();a1.setx(4);a1.printa();B b1=new B();b1.printb();b1.printa();b1.setx(6);b1.printb();b1.printa();a1.printa();运行结果:4super.x=14 x=10014super.x=16 x=1001616BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学方法覆盖30BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学方法覆盖 如果子类不需使用从超类继承来的方法的功能,则可以声明自己的同名方法,称为方法覆盖 覆盖方法的返回类型,方法名称,参数的个数及类型必须和被覆盖的方法一摸一样 只需在方法名前面使用不同的类名或不同类的对象名即可区分覆盖方法和被覆盖方法 覆盖方法的访问权限可以比被覆盖的宽松,但是不能更为严格31BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学方法覆盖的应用场合 子类中实现与超类相同的功能,但采用不同的算法或公式;在名字相同的方法中,要做比超类更多的事情;在子类中需要取消从超类继承的方法。32BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学方法覆盖的注意事项 必须覆盖的方法 派生类必须覆盖基类中的抽象的方法,否则派生类自身也成为抽象类.不能覆盖的方法 基类中声明为final的终结方法 基类中声明为static 的静态方法 调用被覆盖的方法 super.overriddenMethodName();33BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRC+语言程序设计(第4版),郑莉,清华大学 这一节我们学习了在子类中如何隐藏从超类继承的方法,如何覆盖从超类继承的成员。这样就可以在继承的基础上进行修改34结束语BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRC+语言程序设计(第4版),郑莉,清华大学35BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学有继承时子类的构造方法遵循以下的原则 子类不能从超类继承构造方法 最好在子类的构造方法中使用super关键字显式调用超类的某个构造方法,调用语句必须出现在子类构造方法的第一行。如子类构造方法体中没有显式调用超类构造方法,则系统在执行子类的构造方法时会自动调用超类的默认构造方法(即无参的构造方法)36BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR例:子类的构造方法public class Person protected String name,phoneNumber,address;public Person()this(,);public Person(String aName,String aPhoneNumber,String anAddress)name=aName;phoneNumber=aPhoneNumber;address=anAddress;BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR例:子类的构造方法(续)public class Employee extends Person protected int employeeNumber;protected String workPhoneNumber;public Employee()/此处隐含调用构造方法 Person()this(0,);public Employee(int aNumber,String aPhoneNumber)/此处隐含调用构造方法 Person()employeeNumber=aNumber;workPhoneNumber=aPhoneNumber;38BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR例:子类的构造方法(续)public class Professor extends Employee protected String research;public Professor()super();research=;public Professor(int aNumber,String aPhoneNumber,String aResearch)super(aNumber,aPhoneNumber);research=aResearch;39BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRC+语言程序设计(第4版),郑莉,清华大学 这一节介绍了在有继承的情况下,子类的构造方法怎么写。应该首先在第一句调用超类的构造方法 如果不显式地调用超类的构造方法,超类的默认构造方法将被调用。40结束语BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRC+语言程序设计(第4版),郑莉,清华大学41BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学Object 类 所有类的直接或间接超类,处在类层次最高点;包含了所有Java类的公共属性。42BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学Object类的主要方法43BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学Object类的主要方法 public final Class getClass()获取当前对象所属的类信息,返回Class对象。public String toString()返回表示当前对象本身有关信息的字符串对象。public boolean equals(Objectobj)比较两个对象引用是否指向同一对象,是则返回true,否则返回false。protected Object clone()复制当前对象,并返回这个副本。Public int hashCode()返回该对象的哈希代码值。protected void finalize()throws Throwable 在对象被回收时执行,通常完成的资源释放工作。44(按照讲解速度,逐行高亮)BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学相等和同一 在Object类中声明的equals()方法功能是比较两个对象引用是否指向同一对象,而不是比较两个引用指向的对象是否相等。接下来我们看一下“相等”和“同一”的区别。45BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学相等和同一 两个对象具有相同的类型,及相同的属性值,则称二者相等(equal)。如果两个引用变量指向的是同一个对象,则称这两个引用变量同一(identical)。两个对象同一,则肯定相等。两个对象相等,不一定同一。比较运算符“=”判断的是这两个对象是否同一。46BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR例:用“=”判断两个引用是否同一public class Tester1public static void main(String args)BankAccount a=new BankAccount(Bob,123456,100.00f);BankAccount b=new BankAccount(Bob,123456,100.00f);if(a=b)System.out.println(YES);else System.out.println(NO);BankAccount类在2.5.1中声明,此程序运行的结果为“NO”,原因是使用“=”判断的是两个引用是否同一。47BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR例:用“=”判断两个引用是否同一(续)public class Tester2 public static void main(String args)BankAccount a=new BankAccount(Bob,123456,100.00f,Grade.General);BankAccount b=a;if(a=b)System.out.println(YES);else System.out.println(NO);a与b指向的是同一个对象,a与b同一。输出结果为“YES”48BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学equals 方法 由于Object是类层次结构中的树根节点,因此所有其他类都继承了equals()方法 equals()方法是像方法名表达的意思那样,判断两个对象相等吗?49BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学equals 方法 Object类中的 equals()方法的定义如下:public boolean equals(Object x)return this=x;也是判断两个对象引用是否同一。50BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR例:equals方法public class EqualsTestpublic static void main(String args)BankAccount a=new BankAccount(Bob,123456,100.00f);BankAccount b=new BankAccount(Bob,123456,100.00f);if(a.equals(b)System.out.println(YES);else System.out.println(NO);由于两个引用不是指向同一对象,运行结果仍然是“NO”BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRR

    注意事项

    本文(Java程序设计课件Java程序设计 (4).pdf)为本站会员(刘静)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开