欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    【教学课件】第四章类的重用.ppt

    • 资源ID:5665217       资源大小:320KB        全文页数:125页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

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

    【教学课件】第四章类的重用.ppt

    第四章 类的重用,郑 莉,JAVA语言程序设计,2,目录,4.1 类的继承4.2 Object类 4.3 终结类与终结方法4.4 抽象类4.5 类的组合 4.6 包的应用4.7 本章小结,3,4.1 类的继承,类的继承一种由已有的类创建新类的机制,是面向对象程序设计的基石之一通过继承,可以根据已有类来定义新类,新类拥有已有类的所有功能Java只支持类的单继承,每个子类只能有一个直接父类父类是所有子类的公共属性及方法的集合,子类则是父类的特殊化继承机制可以提高程序的抽象程度,提高代码的可重用性,4,基类(base class)也称超类(superclass)是被直接或间接继承的类派生类(derived-class)也称子类(subclass)继承其他类而得到的类继承所有祖先的状态和行为派生类可以增加变量和方法派生类也可以覆盖(override)继承的方法,4.1.1 继承的概念基类和派生类,类的继承,5,子类对象与父类对象存在“IS A”(或“is kind of”)的关系,4.1.1 继承的概念is_a关系,类的继承,6,动物类层次举例,4.1.1 继承的概念图4_1,一般,具体,动物,蛇,蜥蜴,鲸,爬行动物,哺乳动物,狗,巨蜥,壁虎,壁虎,是一种,蜥蜴,爬行,动物是,动物的,一种,类的继承,7,举例,4.1.1 继承的概念又一个例子,类的继承,8,派生类产生的对象从外部来看,它应该包括与基类相同的接口可以具有更多的方法和数据成员其内包含着一个基类类型的子对象,4.1.1 继承的概念派生类对象,9,继承的语法,继承的语法class childClass extends parentClass/类体,类的继承,10,在一个公司中,有普通员工(Employees)及管理人员(Magagers)两类人员职员对象(Employees)可能有的属性信息包括员工号(employeeNumber)姓名(name)地址(address)电话号码(phoneNumber)管理人员(Managers)除具有普通员工的属性外,还可能具有下面的属性职责(responsibilities)所管理的职员(listOfEmployees),4.1.2 继承的语法(续)例4_1,类的继承,11,Employee与Manager的类图,4.1.2 继承的语法(续)例4_1,类的继承,12,/父类Employeeclass Employee int employeeNumbe;String name,address,phoneNumber;/子类Managerclass Manager extends Employee/子类增加的数据成员 String responsibilities,listOfEmployees;,4.1.2 继承的语法(续)例4_1,类的继承,13,设有三个类:Person,Employee,Manager。其类层次如图:,4.1.2 继承的语法(续)例4_2,类的继承,14,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;,4.1.2 继承的语法(续)例4_2,类的继承,15,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();,4.1.2 继承的语法(续)例4_2测试,类的继承,16,运行结果Li Ming123456He Xia543469Internet project说明子类不能直接访问从父类中继承的私有属性及方法,但可使用公有(及保护)方法进行访问,4.1.2 继承的语法(续)例4_2测试结果,类的继承,17,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);/允许,4.1.2 继承的语法(续)例4_3,类的继承,18,4.1.3 隐藏和覆盖,隐藏和覆盖子类对从父类继承来的属性变量及方法可以重新定义,类的继承,19,属性的隐藏子类中声明了与父类中相同的成员变量名,则从父类继承的变量将被隐藏子类拥有了两个相同名字的变量,一个继承自父类,另一个由自己声明当子类执行继承自父类的操作时,处理的是继承自父类的变量,而当子类执行它自己声明的方法时,所操作的就是它自己声明的变量,4.1.3 隐藏和覆盖(续)属性的隐藏,class Parent Number aNumber;,class Child extends Parent Float aNumber;,类的继承,20,如何访问被隐藏的父类属性调用从父类继承的方法,则操作的是从父类继承的属性使用super.属性,4.1.3 隐藏和覆盖(续)访问被隐藏的父类属性,类的继承,21,属性的隐藏举例class A1 int x=2;public void setx(int i)x=i;void printa()System.out.println(x);,4.1.3 隐藏和覆盖(续)例4_4,class B1 extends A1 int x=100;void printb()super.x=super.x+10;System.out.println(super.x=+super.x+x=+x);,类的继承,22,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值设置为6 b1.printb();b1.printa();a1.printa();,4.1.3 隐藏和覆盖(续)例4_4测试,类的继承,23,运行结果4super.x=12 x=10012super.x=16 x=100164,4.1.3 隐藏和覆盖(续)例4_4运行结果,类的继承,24,子类不能继承父类中的静态属性,但可以对父类中的静态属性进行操作。如在上面的例子中,将“int x=2;”改为“static int x=2;”,再编译及运行程序,会得到下面的结果4super.x=14 x=10014super.x=16 x=1001616在上面的结果中,第一行及最后一行都是语句“a1.printa();”输出的结果,显然类中的printb()方法修改的是类中的静态属性x,4.1.3 隐藏和覆盖(续)例4_4运行结果,类的继承,25,方法覆盖如果子类不需使用从父类继承来的方法的功能,则可以声明自己的同名方法,称为方法覆盖覆盖方法的返回类型,方法名称,参数的个数及类型必须和被覆盖的方法一摸一样只需在方法名前面使用不同的类名或不同类的对象名即可区分覆盖方法和被覆盖方法覆盖方法的访问权限可以比被覆盖的宽松,但是不能更为严格,4.1.3 隐藏和覆盖(续)方法覆盖,类的继承,26,方法覆盖的应用场合子类中实现与父类相同的功能,但采用不同的算法或公式 在名字相同的方法中,要做比父类更多的事情 在子类中需要取消从父类继承的方法,4.1.3 隐藏和覆盖(续)方法覆盖的应用场合,类的继承,27,必须覆盖的方法派生类必须覆盖基类中的抽象的方法,否则派生类自身也成为抽象类.不能覆盖的方法基类中声明为final的终结方法基类中声明为static 的静态方法调用被覆盖的方法super.overriddenMethodName();,4.1.3 隐藏和覆盖(续)方法覆盖的注意事项,类的继承,28,4.1.4 有继承时的构造方法,有继承时的构造方法遵循以下的原则子类不能从父类继承构造方法好的程序设计方法是在子类的构造方法中调用某一个父类构造方法,调用语句必须出现在子类构造方法的第一行,可使用super关键字如子类构造方法的声明中没有明确调用父类构造方法,则系统在执行子类的构造方法时会自动调用父类的默认构造方法(即无参的构造方法),类的继承,29,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;,4.1.4 有继承时的构造方法(续)例4_5,类的继承,30,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;,4.1.4 有继承时的构造方法(续)例4_5,类的继承,31,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;,4.1.4 有继承时的构造方法(续)例4_5,类的继承,32,在一个公司管理信息系统中,包括普通员工(Employees),其可能有的属性信息包括员工号(employeeNumber)姓名(name)地址(address)电话号码(phoneNumber)管理者(Magagers),除具有普通员工所具有的属性及行为外,还具有下面的属性和行为职责(responsibilities)所管理的职员(listOfEmployees)工资的计算方法与一般员工不同;福利与一般员工不同顾客(Customers),可能有的属性信息包括姓名(name)地址(address)电话号码(phoneNumber),4.1.5 应用举例例4_6,类的继承,33,类层次结构,4.1.5 应用举例(续)例4_6,类的继承,34,4.2 Object 类,Object类Java程序中所有类的直接或间接父类,类库中所有类的父类,处在类层次最高点包含了所有Java类的公共属性,其构造方法是Object(),35,Object类定义了所有对象必须具有的状态和行为,较主要的方法如下public final Class getClass()获取当前对象所属的类信息,返回Class对象public String toString()返回当前对象本身的有关信息,按字符串对象返回public boolean equals(Objectobj)比较两个对象是否是同一对象,是则返回trueprotected Object clone()生成当前对象的一个拷贝,并返回这个复制对象Public int hashCode()返回该对象的哈希代码值protected void finalize()throws Throwable 定义回收当前对象时所需完成的资源释放工作你的类不可以覆盖终结方法,即有final修饰的方法,4.2 Object类(续)包含的主要方法,Object类,36,相等和同一的概念两个对象具有相同的类型,及相同的属性值,则称二者相等(equal)如果两个引用变量指向的是同一个对象,则称这两个变量(对象)同一(identical)两个对象同一,则肯定相等两个对象相等,不一定同一比较运算符“=”判断的是这两个对象是否同一,4.2 Object类(续)相等和同一,Object类,37,判断两个对象是否同一public class Exam4_7public 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”,原因是使用等号“=”判断的是两个对象是否同一,显然a和b是两个对象,4.2 Object类(续)例4_7,Object类,38,修改刚才的程序public class Exam4_7public static void main(String args)BankAccount a=new BankAccount(Bob,123456,100.00f);BankAccount b=a;if(a=b)System.out.println(YES);else System.out.println(NO);将a所指对象的引用赋给b,因此a与b指向的是同一个对象,a与b同一。输出结果为“YES”,4.2 Object类(续)例4_7,Object类,39,equals 方法由于Object是类层次结构中的树根节点,因此所有其他类都继承了equals()方法Object类中的 equals()方法的定义如下,可见,也是判断两个对象是否同一public boolean equals(Object x)return this=x;,4.2 Object类(续)equals方法,Object类,40,Object类中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”,4.2 Object类(续)例4_8,41,equlas方法的重写要判断两个对象各个属性域的值是否相同,则不能使用从Object类继承来的equals方法,而需要在类声明中对equals方法进行重写String类中已经重写了Object类的Equals方法,可以判别两个字符串是否内容相同,4.2 Object类(续)equals方法 的重写,Object类,42,在BankAccount类中增加equals方法,由于是对Object类中的equals方法进行重写,因此方法定义头必须与Object类中的equals方法完全相同,public boolean equals(Object x)if(this.getClass()!=x.getClass()return false;BankAccount b=(BankAccount)x;return(this.getOwnerName().equals(b.getOwnerName(),4.2 Object类(续)equals方法 的重写,Object类,43,equals方法的应用举例public class Apple private String color;private boolean ripe;public Apple(String aColor,boolean isRipe)color=aColor;ripe=isRipe;public void setColor(String aColor)color=aColor;public void setRipe(boolean isRipe)ripe=isRipe;public String getColor()return color;public boolean getRipe()return ripe;public String toString()if(ripe)return(A ripe+color+apple);else return(A not so ripe+color+apple);,Object类,4.2 Object类(续)例4_9,44,public boolean equals(Object obj)if(obj instanceof Apple)Apple a=(Apple)obj;return(color.equals(a.getColor(),4.2 Object类(续)例4_9,Object类,45,运行结果A ripe red apple is equal to A ripe red apple:truea is identical to b:falseA ripe red apple is equal to A ripe red apple:truea is identical to c:true,4.2 Object类(续)例4_9运行结果,Object类,46,Clone方法根据已存在的对象构造一个新的对象在根类Object 中被定义为protected,所以需要覆盖为public实现Cloneable 接口,赋予一个对象被克隆的能力(cloneability)class MyObject implements Cloneable/,Object类,4.2 Object类(续)Clone方法,47,finalize方法在对象被垃圾回收器回收之前,系统自动调用对象的finalize方法如果要覆盖finalize方法,覆盖方法的最后必须调用super.finalize,4.2 Object类(续)finalize方法,Object类,48,getClass方法final 方法,返回一个Class对象,用来代表对象隶属的类通过Class 对象,你可以查询Class对象的各种信息:比如它的名字,它的基类,它所实现接口的名字等。void PrintClassName(Object obj)System.out.println(The Objects class is+obj.getClass().getName();,4.2 Object类(续)getClass方法,Object类,49,notify、notifyAll、wait方法 final方法,不能覆盖这三个方法主要用在多线程程序中,4.2 Object类(续)notify、notifyAll、wait方法,Object类,50,4.3 终结类与终结方法,终结类与终结方法被final修饰符修饰的类和方法终结类不能被继承终结方法不能被当前类的子类重写,51,4.3.1 终结类,终结类的特点不能有派生类终结类存在的理由安全:黑客用来搅乱系统的一个手法是建立一个类的派生类,然后用他们的类代替原来的类设计:你认为你的类是最好的或从概念上你的类不应该有任何派生类,终结类与终结方法,52,声明ChessAlgorithm 类为final 类final class ChessAlgorithm.如果写下如下程序:class BetterChessAlgorithm extends ChessAlgorithm 编译器将显示一个错误Chess.java:6:Cant subclass final classes:class ChessAlgorithmclass BetterChessAlgorithm extends ChessAlgorithm 1 error,4.3.1 终结类(续)一个例子,终结类与终结方法,53,终结方法的特点不能被派生类覆盖终结方法存在的理由对于一些比较重要且不希望子类进行更改的方法,可以声明为终结方法。可防止子类对父类关键方法的错误重写,增加了代码的安全性和正确性提高运行效率。通常,当java运行环境(如java解释器)运行方法时,它将首先在当前类中查找该方法,接下来在其超类中查找,并一直沿类层次向上查找,直到找到该方法为止,4.3.2 终结方法,终结类与终结方法,54,4.3.1 终结方法(续)例4_10,final 方法举例class Parent public Parent()/构造方法 final int getPI()return Math.PI;/终结方法说明getPI()是用final修饰符声明的终结方法,不能在子类中对该方法进行重载,因而如下声明是错的Class Child extends Parent public Child()/构造方法 int getPI()return 3.14;/重写父类中的终结方法,不允许,终结类与终结方法,55,4.4 抽象类,抽象类代表一个抽象概念的类没有具体实例对象的类,不能使用new方法进行实例化类前需加修饰符abstract可包含常规类能够包含的任何东西,例如构造方法,非抽象方法也可包含抽象方法,这种方法只有方法的声明,而没有方法的实现,56,存在意义抽象类是类层次中较高层次的概括,抽象类的作用是让其他类来继承它的抽象化的特征抽象类中可以包括被它的所有子类共享的公共行为抽象类可以包括被它的所有子类共享的公共属性在程序中不能用抽象类作为模板来创建对象;在用户生成实例时强迫用户生成更具体的实例,保证代码的安全性,抽象类,4.4 抽象类(续)存在意义,57,将所有图形的公共属性及方法抽象到抽象类Shape。再将2D及3D对象的特性分别抽取出来,形成两个抽象类TwoDimensionalShape及ThreeDimensionalShape2D图形包括Circles、Triangles、Rectangles和Squares3D图形包括Cube、Sphere、或Tetrahedron在UML中,抽象类的类名为斜体,以与具体类相区别,4.4 抽象类(续)几何形状的例子,抽象类,58,例4-6中,如果在应用系统中涉及到的人员只包括:Customers,Employees 及 Managers。则Person 类的子类对象覆盖了应用中的对象,可以将Person 类声明为抽象类,4.4 抽象类(续)人员的例子,抽象类,59,4.4.1 抽象类的声明,抽象类声明的语法形式为abstract class Number.如果写:new Number();编译器将显示错误,抽象类,60,4.4.2 抽象方法,抽象方法声明的语法形式为public abstract(.);仅有方法头,而没有方法体和操作实现具体实现由当前类的不同子类在它们各自的类声明中完成抽象类可以包含抽象方法,抽象类,61,需注意的问题一个抽象类的子类如果不是抽象类,则它必须为父类中的所有抽象方法书写方法体,即重写父类中的所有抽象方法只有抽象类才能具有抽象方法,即如果一个类中含有抽象方法,则必须将这个类声明为抽象类除了抽象方法,抽象类中还可以包括非抽象方法,4.4.2 抽象方法(续)需注意的问题,抽象类,62,抽象方法的优点隐藏具体的细节信息,所有的子类使用的都是相同的方法头,其中包含了调用该方法时需要了解的全部信息强迫子类完成指定的行为,规定其子类需要用到的“标准”行为,4.4.2 抽象方法(续)抽象方法的优点,抽象类,63,各种图形都需要实现绘图方法,可在它们的抽象父类中声明一个draw抽象方法abstract class GraphicObject int x,y;void moveTo(int newX,int newY).abstract void draw();,4.4.2 抽象方法(续)一个绘图的例子,抽象类,64,然后在每一个子类中重写draw方法,例如:class Circle extends GraphicObject void draw().class Rectangle extends GraphicObject void draw().,4.4.2 抽象方法(续)一个绘图的例子,抽象类,65,贷款(Loan)分为许多种类,如租借(Lease)、抵押(Mortgage)、房屋贷款(HouseLoan)、汽车贷款(CarLoan)等将Loan声明为抽象类,并指定所有的子类对象都应具有的行为,如计算月还款值(calculateMonthlyPayment),还款(makePayment),取得客户信息(getClientInfo),其中前两个因贷款种类不同计算方法也不同,可声明为抽象方法,Loan的所有子类都必须对这两个抽象方法进行重写public abstract class Loan public abstract float calculateMonthlyPayment();public abstract void makePayment(float amount);public Client getClientInfo(),4.4.2 抽象方法(续)例4_11,抽象类,66,4.5 类的组合,类的组合面向对象编程的一个重要思想就是用软件对象来模仿现实世界的对象现实世界中,大多数对象由更小的对象组成与现实世界的对象一样,软件中的对象也常常是由更小的对象组成Java的类中可以有其他类的对象作为成员,这便是类的组合,67,4.5.1 组合的语法,组合的语法很简单,只要把已存在类的对象放到新类中即可可以使用“has a”语句来描述这种关系例如,考虑Kitchen类提供烹饪和冷藏食品的功能,很自然的说“my kitchen has a cooker/refrigerator”。所以,可简单的把对象myCooker和myRefrigerator放在类Kitchen中。格式如下class Cooker/类的语句 class Refrigerator/类的语句class Kitchen Cooker myCooker;Refrigerator myRefrigerator;,类的组合,68,4.5.1 组合的语法(续)例4_12,一条线段包含两个端点public class Point/点类 private int x,y;/coordinate public Point(int x,int y)this.x=x;this.y=y;public int GetX()return x;public int GetY()return y;,类的组合,69,class Line/线段类 private Point p1,p2;/两端点 Line(Point a,Point b)p1=new Point(a.GetX(),a.GetY();p2=new Point(b.GetX(),b.GetY();public double Length()return Math.sqrt(Math.pow(p2.GetX()-p1.GetX(),2)+Math.pow(p2.GetY()-p1.GetY(),2);,4.5.1 组合的语法(续)例4_12,类的组合,70,4.5.2 组合与继承的比较,组合与继承的比较“包含”关系用组合来表达如果想利用新类内部一个现有类的特性,而不想使用它的接口,通常应选择组合,我们需在新类里嵌入现有类的private对象如果想让类用户直接访问新类的组合成分,需要将成员对象的属性变为public“属于”关系用继承来表达取得一个现成的类,并制作它的一个特殊版本。通常,这意味着我们准备使用一个常规用途的类,并根据特定需求对其进行定制,类的组合,71,car(汽车)对象是一个很好的例子,由于汽车的装配是故障分析时需要考虑的一项因素,所以有助于客户程序员理解如何使用类,而且类创建者的编程复杂程度也会大幅度降低class Engine/发动机类public void start()public void rev()public void stop(),4.5.2 组合与 继承的比较(续)Car的例子,类的组合,72,class Wheel/车轮类 public void inflate(int psi)class Window/车窗类public void rollup()public void rolldown()class Door/车门类public Window window=new Window();public void open()public void close(),4.5.2 组合与 继承的比较(续)Car的例子,类的组合,73,public class Car public Engine engine=new Engine();public Wheel wheel=new Wheel4;public Door left=new Door(),right=new Door();public Car()for(int i=0;i 4;i+)wheeli=new Wheel();public static void main(String args)Car car=new Car();car.left.window.rollup();Car.wheel0.inflate(72);,4.5.2 组合与 继承的比较(续)Car的例子,类的组合,74,组合与继承的结合,许多时候都要求将组合与继承两种技术结合起来使用,创建一个更复杂的类,类的组合,75,组合与继承举例class Plate/声明盘子public Plate(int i)System.out.println(Plate constructor);class DinnerPlate extends Plate/声明餐盘为盘子的子类public DinnerPlate(int i)super(i);System.out.println(DinnerPlate constructor);,4.5.3 组合与 继承的结合(续)例4_13,类的组合,76,class Utensil/声明器具Utensil(int i)System.out.println(Utensil constructor);class Spoon extends Utensil/声明勺子为器具的子类public Spoon(int i)super(i);System.out.println(Spoon constructor);,4.5.3 组合与 继承的结合(续)例4_13,类的组合,77,class Fork extends Utensil/声明餐叉为器具的子类public Fork(int i)super(i);System.out.println(Fork constructor);class Knife extends Utensil/声明餐刀为器具的子类public Knife(int i)super(i);System.out.println(Knife constructor);,4.5.3 组合与 继承的结合(续)例4_13,类的组合,78,class Custom/声明做某事的习惯public Custom(int i)System.out.println(Custom constructor);public class PlaceSetting extends Custom/声明餐桌的布置 Spoon sp;Fork frk;Knife kn;DinnerPlate pl;public PlaceSetting(int i)super(i+1);sp=new Spoon(i+2);frk=new Fork(i+3);kn=new Knife(i+4);pl=new DinnerPlate(i+5);System.out.println(PlaceSetting constructor);public static void main(String args)PlaceSetting x=new PlaceSetting(9);,4.5.3 组合与 继承的结合(续)例4_13,类的组合,79,运行结果Custom constructorUtensil constructorSpoon constructorUtensil constructorFork constructorUtensil constructorKnife constructorPlate constructorDinnerPlate constructorPlaceSetting constructor,4.5.3 组合与 继承的结合(续)例4_13运行结果,类的组合,80,4.6 包的应用,包为了解决类名冲突,Java提供包来管理类名空间Java利用包来组织相关的类,并控制访问权限包是一种松散的类的集合,利用包来管理类,可实现类的共享与复用同一包中的类在默认情况下可以互相访问,通常把需要在一起工作的类放在一个包里,81,4.6.1 Java 基础类库简介,Java基础类库Java提供了用于语言开发的类库,称为Java基础类库(JFC,Java Foundational Class),也称应用程序编程接口(API,Application Programming Interface),分别放在不同的包中Java提供的包主要有java.lang,java.io,java.math,java.utiljava.applet,java.awt,java.awt.datatransferjava.awt.event,java.awt.image,java.rmi,java.security,j

    注意事项

    本文(【教学课件】第四章类的重用.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开