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

    Java技术及应用第三讲面向对象技术.ppt

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

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

    Java技术及应用第三讲面向对象技术.ppt

    第3章Java面向对象初步,广东工业大学计算机学院,广东工业大学计算机学院,2,本章学习目标,类修饰符包多态本章补充阅读材料,广东工业大学计算机学院,3,面向对象整体概念图,广东工业大学计算机学院,4,面向对象几个概念,类:是既包括数据又包括作用于数据的一组操作的封装体。类中的数据称为成员变量,类中对数据的操作称为成员方法。对象:对象是类的实例。对象是动态的,有自己的生存周期。封装性:为类的成员提供公有、缺省、保护和私有等多级访问权限,目的是隐藏类中的私有变量和类中方法的实现细节。继承性:提供从已存在的类创建新类的机制,继承使一个新类自动拥有被继承类的全部成员。一个类只有一个直接父类称为单重继承,如果一个类拥有多个直接父类称为多重继承。多态性:提供类中方法执行的多样性。有两种表现形式:重载和覆盖。,广东工业大学计算机学院,5,3.1 类,类的相关概念类是抽象数据类型的具体实现,是具有相同属性和相同操作功能的对象的集合。对象是类的实例,两者之间的关系相当于一般程序设计语言中变量和变量类型的关系。在类中,数据或变量被称为成员变量,定义在类中的方法和成员变量统称为类的成员。在大多数类中,成员变量通过定义在该类中的方法来操作和存取,方法决定该类中的数据如何使用。(封装),广东工业大学计算机学院,6,3.1 类,Java中的类在Java程序中,类是由定义和主体构成的右图是Java中一个完整的类,广东工业大学计算机学院,7,3.1 类,类的定义格式(0)从上页得知,Java中,类定义的基本语法如下:作用域 class 类名 extends 父类名 implements 接口名 成员变量声明 成员方法声明,广东工业大学计算机学院,8,3.1 类,类的定义格式(1)类的作用域 用来说明类的特殊性质。分为以下几种:外部类public 公共类型无关键字“友好的”abstract:抽象类 final:非继承 protected 和 private:应用于内部类,广东工业大学计算机学院,9,3.1 类,类的定义格式(2)关于类头在class关键字后面,应跟随自定义类的名称。(不要把class写成了Class)。父类名跟在extends关键字后面,用来说明当前类是哪个已存在类的子类(只能有一个直接父类,与C+不同),说明继承关系。接口名跟在implements关键字后面,用来说明当前类中实现了哪个接口定义的功能和方法。接口是Java语言用来实现多重继承的一种特殊机制。(下一章将对接口进行详细介绍!),广东工业大学计算机学院,10,3.1 类,类的定义格式(3)关于类体(0)类体的定义要包括类的具体内容,包括类的属性与方法。class,广东工业大学计算机学院,11,3.1 类,类的定义格式(3)关于类体(1)类的成员变量语法:修饰符 变量类型 变量名=变量初值;例:private String name;protected int age;,广东工业大学计算机学院,12,3.1 类,类的定义格式(3)关于类体(2)类的成员方法 类中定义的方法通常起到两种作用:一是围绕着类的属性进行各种操作;二是与其他的类或对象进行数据交流、消息传递等操作。Java中声明方法的语法如下:修饰符 返回值类型 方法名(参数列表)throws 异常名1,异常名2,局部变量声明;语句序列;/若返回值类型不为void,则需用return语句返回值,广东工业大学计算机学院,13,3.1 类,类的定义格式(3)关于类体(3)类的构造方法 一般而言,类的成员方法都是在类的实例对象创建之后,才用该对象调用相应的方法。而构造方法能够在创建对象的同时执行该方法。Java允许对象在它们被创建时初始化自己。这种自动的初始化是通过使用构造方法(constructor)来完成的。构造方法的任务就是初始化一个对象的内部状态。,广东工业大学计算机学院,14,3.1 类,类的定义格式(3)关于类体(3)类的构造方法修饰符 类名称(类型1 参数1,类型2 参数2,)程序语句;./构造方法没有返回值。说明:1.修饰符可以是public或private.2.构造方法的名字必须与类名相同。3.构造方法没有返回值类型。4.构造方法不能由编程人员显式地直接调用,它是在对象创建时由new运算符自动调用的。5.构造方法可以重载,即一个类可以有多个具有不同参数列表的构造方法。,广东工业大学计算机学院,15,3.1 类,类的定义格式(3)关于类体(3)类的构造方法实例1class Employee public Employee(String n,double s,int y,int m,int d)/构造方法 name=n;/职工姓名 salary=s;/职工工资 GregorianCalendar calendar=new GregorianCalendar(y,m-1,d);hireDay=calendar.getTime();/工作日期 private String name;private double salary;private Date hireDay;Employee e=new Employee(“James Bond”,100000,1950,1,1),广东工业大学计算机学院,16,3.1 类,类的定义格式(3)关于类体(3)类的构造方法实例2构造方法的重载class CCircle;public CCircle()/没有参数的构造方法 public CCircle(String str,double r)/有两个参数的构造方法,广东工业大学计算机学院,17,3.1 类,类的定义格式(3)关于类体(3)类的默认构造方法每个类都至少有一个构造方法,如果程序员没有为类定义构造方法,系统会自动为该类生成一个默认的构造方法。默认构造方法的名字与类名相同,它的参数列表和方法体均为空,自动将所有实例变量初始化为默认值(数值型为0,布尔型为false,字符型为u0000,对象型为null)。一旦定义了自己的构造方法,默认构造方法将不再起作用。,广东工业大学计算机学院,18,3.1 类,类的定义格式(3)关于类体(4)类的析构方法用于释放类的实例并执行特定操作。Java语言的资源回收机制能够自动释放不再被使用的对象,因此,自定义一般不需要设计析构方法。如果需要主动释放对象,或在释放对象时执行特定操作,则类中可以定义析构方法。public void finalize()/析构方法,一个类中只能有一个 语句序列;,广东工业大学计算机学院,19,3.1 类,类的定义格式(3)关于类体(5)this 保留字this是对类对象自身的引用。它是一个泛指,与上下文环境有关。例如:this.edgeLength=Length;,class ThisClass public static void main()Bank bank=new Bank();bank.someMethod(this);/指代对象本身,class Circle int r;Circle(int r)this.r=r;public area()return r*r*3;/访问本类的成员方法、成员变量(区分局部变量),广东工业大学计算机学院,20,3.1 类,类的定义格式(3)关于类体(4)this通过this()可以从某个构造函数调用另一个构造函数。例:class CCircle.public CCircle()this(Green,1.0);/此行会调用下面的构造函数public CCircle(String str,double r);完整程序,广东工业大学计算机学院,21,3.1 类,类的定义格式(3)关于类体(4)instanceof对象符对象运算符instanceof判断一个对象是否属于指定类及其子类,返回boolean类型。Date2 aday=new Date2(2006,5,1);aday instanceof Date2/返回true,aday是Date2类对象,广东工业大学计算机学院,22,3.1 类,类的定义格式(3)关于类体(5)extends在定义类时,使用extends来说明与父类的继承关系。Java中的类都是Object的子类,广东工业大学计算机学院,23,3.1 类,关于类体(5)extends类的赋值相容性:继承性具有“即是”性质:子类对象即是父类对象。反之则不然。例:Person p1=Student1 s1=(Student1是Person的子类)p1 instanceof Person1/返回true,p1是Person1类对象 s1 instanceof Person1/返回true,子类对象即是父类对象 p1 instanceof Student1/返回false继承性的“即是”性质表现为父类与子类之间具有赋值相容性,即父类对象能否被转换为子类对象,反之则不然。例:Person1 p1=new Student1();/赋值相容 Student1 s1=new Person1();/赋值不相容,广东工业大学计算机学院,24,3.1 类,类的定义格式(3)关于类体(5)supersuper指这个对象的父类,可用来引用父类中的方法(包括构造方法)及变量数据.特别是用于调用被父类所覆盖的实例方法和属性!,广东工业大学计算机学院,25,3.1 类,实例1:父类实例的super引用(访问被覆盖的方法)public class Ostrich extends Brid/子类中原有的内容/增加一个callOverridedMethod()方法 public void callOverridedMethod()/在子类方法中通过super显式调用父类被覆盖的实例方法 super.fly();public static void main(String args)/创建Ostrich对象 Ostrich os=new Ostrich();/执行Ostrich对象的fly方法,将输出“我只能在地上奔跑”os.fly();os.callOverridedMethod();/借助该方法调用被覆盖的fly方法,输出”我在飞“!备注:this和super都不能出现在static修饰的方法中。,广东工业大学计算机学院,26,3.1 类,实例2:用super访问被覆盖的变量class BaseClass public int a=5;class SubClass extends BaseClass public int a=7;public void accessOwner()System.out.println(a);/访问覆盖属性a,输出7public void accessBase()/super是对该方法调用者对应的父类对象的引用 System.out.println(super.a);/访问父类被覆盖的属性a,输出5.public static void main(String args),广东工业大学计算机学院,27,3.1 类,实例3:利用super调用父类的构造方法public class apple extends fruits public apple(int price)super(price);/other code 以上句子表示使用父类的构造函数生成实例 super必须是子类构造器的第一条语句(构造方法中才是如此),广东工业大学计算机学院,28,3.1 类,关于子类构造方法调用父类构造方法的补充说明。(分三种情况)子类构造方法第一行用super显式调用父类构造方法,系统将根据super调用里传入的实参列表调用父类相应的构造方法。子类构造方法第一行使用this显示调用本类中重载的构造方法,系统将根据this调用里传入的实参列表调用本类另一个构造方法。执行本类另一个构造方法时会调用父类的构造方法。子类构造方法super、this调用,系统将会在执行子类构造方法之前,隐式调用父类无参数的构造方法。也就是说:不管哪种情况,子类构造方法总会调用父类构造方法一次。不仅如此,执行父类构造方法时,系统会再次上溯执行其父类的构造方法,以此类推,创建任何Java对象,最先执行的总是类的构造方法。,广东工业大学计算机学院,29,3.1 类,实例:演示构造方法之间的调用关系 class Creature public Creature()System.out.println(“Creatrue无参构造方法”);class Animal extends Creature public Animal(String name)System.out.println(“Animal带一个参数的构造方法,该动 物的name为”+name);public Animal(String name,int age)this(name);System.out.println(“Animal带两个参数的构造函数,其age为”+age);,广东工业大学计算机学院,30,3.1 类,实例:演示构造方法之间的调用关系(续)public class Wolf extends Animal public Wolf()/显式调用父类带两个参数的构造方法 super(“土狼”,3);System.out.println(“Wolf无参数的构造函数”);public static void main(Stringargs)new Wolf();结果?,广东工业大学计算机学院,31,3.1 类,类的定义格式(4)创建类及其实例对象对象是类的一个实例,类是同种对象的抽象,是创建对象的模板。在程序中创建一个对象将在内存中开辟一块空间,其中包括该对象的属性和方法。1)new 我们将分步讲述这个类的实现细节。创建对象使用运算符new,例如下面的语句将创建Employee类的对象:,【例4.1】显示三个员工的相关信息,广东工业大学计算机学院,32,3.1 类,类的定义格式(4)创建类及其实例对象释放对象 Java语言有资源回收机制,能够自动跟踪存储单元的使用情况,自动收回不再被使用的资源。(C+则必须在对象使用完后释放对象),广东工业大学计算机学院,33,3.2 修饰符,访问控制修饰符 Java推出了“访问控制修饰符”的概念,允许库创建者声明哪些东西是客户程序员可以使用的,哪些是不可使用的。这种访问控制的级别在“最大访问”和“最小访问”的范围之间,分别包括:public,默认(无关键字),protected以及private。下面的列表说明访问控制修饰符含义:,广东工业大学计算机学院,34,3.2修饰符,类的访问控制:public 类只要被声明成public,就意味着它可以被从任何地方访问。public class MyClass int i;void fun(),广东工业大学计算机学院,35,3.2修饰符,类的访问控制:public一个源程序在(同一个)文件中可以声明多个类,但用public修饰的类只能有一个,且该类名必须与文件名相同。例,在源文件Date1.java中可以声明多个类如下public class Date1/公有的类class Date1_ex,广东工业大学计算机学院,36,3.2修饰符,类的访问控制:默认方式(freindly)假如类不含有一个明确的访问说明,说明它具有默认的访问控制特性。这种默认的访问控制权规定类只能被同一个包中的其他代码所访问,在包外不可见。这种访问特性称为包访问性。在默认方式中,java将同一个目录的类也当成同一个包,也可以访问。class MyClass int i;void fun(),广东工业大学计算机学院,37,3.2修饰符,实例(指出其中错误之处)第一个源文件:import demo.SuperClass;public class SubClass extends SuperClass static public void main(String args)System.out.println(SubClass.);/End of method:main/End of class:SubClass第二个源文件:package demo;class SuperClass/./End of class:SuperClass,广东工业大学计算机学院,38,3.2修饰符,成员的访问控制方式:public则该成员可以被任何类中的方法访问表明对外开放的方式对于一个类,一般只有少量(或者没有)public 数据成员和部分 public 方法例:public class PubYong public int a;public void print().class text public static void main(String args)PubYong aa=new PubYong();aa.a=112;aa.print();,广东工业大学计算机学院,39,3.2 修饰符,成员的访问控制方式:private目的:隐藏具体的实现细节只有同一个类的成员方法才能访问私有成员数据成员常常是private 采用 public“get”方法读取数据采用 public“set”方法写数据public class PrivateUse private String uname;public String getuname()return uname;PrivateUse PrivateUse1=new.String a1=PrivateUse1.getuname();,广东工业大学计算机学院,40,3.2 修饰符,成员的访问控制方式:private,1/J_CircleTest.java2/Demonstrate errors resulting from attempts 3/to access private members of class J_Circle.4 public class J_CircleTest5 6 public static void main(String args)7 8 J_Circle c=new J_Circle();9 10 c.m_radius=10;11 12,J_CircleTest.java:10:m_radius has private access in J_Circle c.m_radius=10;1 error,设在类中J_Circle声明:private int m_radius;,广东工业大学计算机学院,41,3.2 修饰符,成员的访问控制方式:protected介于public 和private之间同一个包内的所有类的所有方法都能访问该成员如果不在同一个包内的类的方法要访问该成员,则该类必须是该成员所在的类的子类例:package;public class ABC protected int pro_i=5;protected void show()(“pro_i=”+pro_i;)设UseABC与ABC在同一包里,则在UseABC里可以使用pro_i和show方法。,广东工业大学计算机学院,42,3.2 修饰符,成员的访问控制方式:protected package;public class UseABC public static void main(String args)ABC abc=new ABC();(“abc.pro_i=“+abc.pro_i);/可以使用 abc.show();/可以使用,广东工业大学计算机学院,43,3.2 修饰符,成员的访问控制方式:friendly(缺省方式)只有在同一个包内的类的方法才能访问该方法 例:public class UserOne int a;int b;void print()c=a+b;System.out.println(“a+b=“+c);class UserOne1 public static void main(String args)UserOne a1=new UserOne();a1.a=2;a1.b=3;a1.print();,广东工业大学计算机学院,44,3.2 修饰符,访问控制修饰符小结,广东工业大学计算机学院,45,3.2 修饰符,静态修饰符static称为静态修饰符,它可以修饰类中的属性和方法。1.静态变量 声明为static的变量实质上就是全局变量。当声明一个对象时,并不产生static变量的拷贝,而是该类所有的对象共用一个static变量。,class ABCD char data;static int share_data;class Demo ABCD a,b,c,d;,广东工业大学计算机学院,46,3.2 修饰符,静态变量实例public class StaticVarpublic static int number 5;public class OtherClasspublic void method()int x=StaticVar.number;/访问方式:类名.,广东工业大学计算机学院,47,3.2 修饰符,静态修饰符静态方法 声明为static的方法是属于整个类的,它在内存中的代码段将随着类的定义而分配和装载,不被任何一个对象专有。访问static方法或static变量时,应该使用类名做为前缀,而不是某一个具体的对象名。注意:静态方法仅能访问类中的静态数据或其他静态方法,不能访问其他非静态数据和方法。思考:为什么?,广东工业大学计算机学院,48,3.2 修饰符,静态方法实例public class GeneralFunctionpublic static int addUp(int x,int y)return x+y;public class UseGeneralpublic void method()int a=9;int b=10;int c=GeneralFunction.addUp(a,b);【例】静态方法的使用,广东工业大学计算机学院,49,3.2 修饰符,抽象修饰符abstract是抽象修饰符,可以用来修饰类或方法.1 抽象类当一个类被声明为abstract时,这个类被称为抽象类。抽象类有点类似模板的作用,其目的是要您依据它的格式来修改并创建新的类。(抽象类不能直接建立实例对象!),广东工业大学计算机学院,50,3.2 修饰符,抽象修饰符1 抽象类定义抽象类abstract class 类名称/定义抽象类 声明成员变量;返回的数据类型 method 名称(参数.)/定义一般的方法 修饰符 abstract 返回数据类型 method 名称(参数.);/定义抽象方法。注意在抽象方法里,没有定义处理的方式。/抽象类至少要有一个抽象方法,广东工业大学计算机学院,51,3.2 修饰符,抽象修饰符2 抽象方法 当一个方法被声明为abstract时,这个方法被称为抽象方法。抽象方法属于一种不完整的方法,只有方法头,没有具体的方法体和操作实现。其通用形式如下:abstract 返回值类型 方法名(参数列表)任何含有一个或多个抽象方法的类都必须声明成抽象类。在Java中抽象方法是非常重要的概念。在接口中会大量的用到。,广东工业大学计算机学院,52,3.2 修饰符,抽象修饰符举例:设计一个CShape的父类,依据此类可用来衍生出圆形(circle)、长方形(rectangle)与三角形(triangle)等几何形状的类。abstract class CShape/定义抽象类 protected String color;/成员变量 public void setColor(String str)/一般方法,用来设置形状的颜色 color=str;public abstract void show();/抽象方法,在此没有定义处理方式,【例】完整的抽象类实例,广东工业大学计算机学院,53,3.2 修饰符,final最终修饰符它可以修饰类、变量和方法。1 最终类 如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此声明一个既是abstract又是final的类是不合法的。被声明成final的类,通常是一些有特殊作用的、用来完成标准功能的类,将一个类声明为final可以将它的内容、属性和功能固定下来,与它的类名形成稳定的映射关系,从而保证引用这个类时所实现的功能是准确无误的。(比如说类就是一个final类),广东工业大学计算机学院,54,3.2 修饰符,final最终修饰符2 最终变量 一个变量可以声明为final,这样做的目的是防止它的内容被修改。这就意味着在声明final变量的时候,必须对其初始化。例如:final int SUM=100;一个final变量实质上就是一个常量。注意:1.final变量的初始化可以先定义(未初始化前不能被使用),再初始化,但是一旦初始化后不能修改。(事实上不使用当然也不用初始化了)2.final成员变量(实例属性或类属性)必须由成员变量显式初始化,即系统不会对final成员进行隐式初始化!,广东工业大学计算机学院,55,3.2 修饰符,final最终修饰符2 最终变量(续)final修饰形参:public void test(final int a)/不能对final修饰的形参赋值,下面语句不合法 a=5;思考:为什么不合法?因为形参在调用该方法时,由系统根据传入的参数来完成初始化,因此使用final修饰的形参不能被赋值。,广东工业大学计算机学院,56,3.2 修饰符,final最终修饰符3 最终方法 声明成final的方法不能被覆盖。之所以要使用final方法,主要是出于对两方面理由的考虑:第一个是为方法“上锁”,防止任何继承类改变它的本来含义。设计程序时,若希望一个方法的行为在继承期间保持不变,而且不可被覆盖或改写,就可以采取这种做法。采用final方法的第二个理由是提高程序的执行效率。例:Java提供的Object类里就有一个final方法:getclass(),广东工业大学计算机学院,57,3.3 包,包的概念如果一个类需要在多个地方重用,可以将这个类放在称为包(package)的组织结构中。所谓包就是为每一个java类提供一个命名空间。(包其实是Java文件的组织形式)定义包语法格式:package 包名;多层次的包定义格式 package 包名1.包名2.包名3;例:package China.CQ;,广东工业大学计算机学院,58,3.3 包,包的作用Java中的包(Package)其实指的就是目录,它是将类(Class)或者接口(Interface)分类按照一定的规则存放在不同的文件夹中。标准的Java类库分布在多个包中,如java.lang、java.util、javax等,广东工业大学计算机学院,59,3.3 包,导入所需的类一个类可以使用它所在的包中的所有类,以及其它包中的公有类(声明为public的类)。对于其它包中的公有类,有两种方法:1.每个类名之前添加完整的包名 today=new()2.使用import语句导入import java.util.*;import;,广东工业大学计算机学院,60,3.3 包,类冲突的情况在不同的包中,有可能存在名字相同的类。例如:java.util和java.sql包中都有日期(Date)类。如果要同时使用到这两个包,又要用到java.sql包中Date类时,需要明确导入:import java.util.*;import java.sql.*;import;如果两个Date类都要使用到,那只能将完整的包名写出来:today=new(),广东工业大学计算机学院,61,3.3 包,静态导入从JDK5.0开始,import语句增加了导入静态方法和静态域的功能。例如,如果在源文件的顶部添加一条指令:import static.*;那么就可以使用System类的静态方法和静态域,而不必加类名前缀,例如:out.println(”Goodbye”);另外还可以将特定的方法或者域导入:import static java.lang.System.out;,广东工业大学计算机学院,62,3.3 包,将类放入包中要想将一个类放入包中,就必须将包的名字放在源文件的开头、包中定义类的代码之前。例如:package;public class Employee 如图所示:类存储在文件系统的子目录中,类的路径必须与包名匹配,广东工业大学计算机学院,63,3.3 包,包的安全性在默认情况下,包不是一个密封的实体,任何人都可以向包中添加更多的类,所有黑客也可以这样做。为了提高安全性,从JDK1.2开始,JDK修改了类加载器,明确禁止加载用户自定义的、包名以“java”开头的类。另外,可以使用包密封(package sealing)机制将包密封起来,这样包就不能再添加任何类。具体请参考JAR文件制作方法方面的资料。,广东工业大学计算机学院,64,3.3 包,Java常用包java.lang(语言包):核心类库,包括Object类、基本数据类型封装、数学运算法、字符串、线程、异常处理等。java.util(实用包):工具类库,包含日期类、集合类库等。java.awt(抽象窗口工具包):提供构建图形用户界面的类库,包括组件、事件及绘图功能。java.applet:实现Applet应用程序java.text(文本包):Format、DateFormat、SimpleDateFormat等类提供各种文本或日期格式。java.io(输入/输出包):提供标准输入、输出流及文件操作类库。(网络包):提供与网络编程有关的类库。java.sql:提供数据库应用功能的类库java.swing:扩充和增强图形用户界面功能的类库。,广东工业大学计算机学院,65,3.4 多态,多态是指在一棵继承树中的类可以有多个同名但不同方法体以及不同形参的方法。两种情况:覆盖:在类的继承中,除了继承来的父类成员外,子类也可以有自己的成员如果子类的某个成员变量或成员函数与父类的同名,子类的成员函数或成员变量将隐藏父类的同名成员,这称为成员的覆盖。将子类覆盖的情形分为:1.变量覆盖。2.函数覆盖。,广东工业大学计算机学院,66,3.4 多态,覆盖函数覆盖函数覆盖即指在子类中重新定义父类中已有的函数。,class Car int color_number;int door_number;int speed;public void push_break()speed=0;public void add_oil(),class Trash_Car extends Car double amount;public void fill_trash()public void push_break()speed=speed 10;,广东工业大学计算机学院,67,3.4 多态,覆盖函数覆盖对于重写的方法,Java运行时系统根据调用该方法的实例的类型来决定选择哪个方法调用。,public class DemoCarpublic static void main(String args)Car aCar=new Trash_Car();aCar.push_break();,在这里,类Trash_Car中的push_break()方法将被调用。,广东工业大学计算机学院,68,3.4 多态,覆盖函数覆盖函数覆盖时应遵循的原则(1)覆盖后的函数不能比被覆盖的函数有更严格的访问权限。例:class GongsiOne Public void print()class GongsiOne1 extends GongsiOne private void print()/上述程序将不能正常运行。会提示错误!(2)覆盖后的函数不能比被覆盖的函数产生更多的异常。(后面将提到!),广东工业大学计算机学院,69,3.4 多态,函数重载同一个类定义中有多个同名的函数,但有不同的形参,而且每个函数有不同的方法体,调用时根据形参的个数和类型来决定调用的是哪个函数,广东工业大学计算机学院,70,3.5 补充阅读材料,Java2 程序设计实用教程(第2版)叶核亚 电子工业出版社。第3章:面向对象的核心特性。Java2 程序设计基础洪维恩 电脑报电子音像出版社。第8章 认识类 第9章 类的进阶认识 第10章 类的继承,广东工业大学计算机学院,71,3.6 技能训练 类的定义和对象使用,训练目的通过本次技能训练,使学生掌握类的定义和对象的使用。掌握类与对象的区别与联系,掌握成员变量与成员方法的定义,掌握构造方法的定义和使用技巧。训练内容及要求1、编程并上机调试:按以下要求创建一个学生类(Student),并完成相应的操作:其成员变量:姓名(name)、年龄(age)、身高(height)、体重(weight)成员方法:setAge用于给变量age赋值成员方法(out):按一定格式输出各成员变量的值。,广东工业大学计算机学院,72,3.6 技能训练 类的定义和对象使用,构造方法:通过参数传递,分别对name、height、weight初始化。最后,创建这个类的对象,并完成对成员变量赋值和输出的操作。2、写出你在实验过程中的问题及解决办法。3、总结本次试验的收获。,

    注意事项

    本文(Java技术及应用第三讲面向对象技术.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开