您好,欢迎访问三七文档
2019/12/1901:09武汉大学珞珈学院第1页第4章类与对象讲授者:熊春秀2019/12/1901:09武汉大学珞珈学院第2页1.全面掌握面向对象的基本特征;本章学习要点2.掌握如何定义一个类以及如何生成对象;3.深入掌握方法的定义及技巧;4.深入掌握类的访问权限与封装机制;5.深入掌握包的定义与包的使用方法。2019/12/1901:09武汉大学珞珈学院第3页理解面向对象的基本特征教学重点理解如何定义一个类熟悉对象的生成方法掌握类的各种访问权限理解包的定义2019/12/1901:09武汉大学珞珈学院第4页熟悉类的定义过程教学难点熟悉对象的生成过程熟悉类的封装机制熟悉包的使用方法2019/12/1901:09武汉大学珞珈学院第5页Java是一种纯粹的面向对象的程序设计语言,一个Java程序乃至Java程序内的基本单元都是对象。因此,用Java进行程序设计必须将自己的思想转入到一个面向对象的世界,以对象世界的思维方式来思考问题。4.1Java编程思想编写一个Java程序就是在定义类和创建对象,也就是说定义类和建立对象是Java编程的主要任务。2019/12/1901:09武汉大学珞珈学院第6页4.2类的建立Java的类用户自定义类系统定义的类Java的类库就是系统定义的类,它是系统提供的已实现的标准类的集合,提供了Java程序与运行它的系统软件(Java虚拟机)之间的接口。2019/12/1901:09武汉大学珞珈学院第7页学习Java语言在某种程度上就是在:1.学习如何定义所需要的类,即学习Java程序的书写规范,熟悉和掌握语法规则;2.熟悉Java平台定义了哪些经常要用到、而且满足我们需要的类。4.3Java语言的学习2019/12/1901:09武汉大学珞珈学院第8页4.4类的概念与定义用面向对象的观点来看,世界上的一切事物都是对象。而物以“类”聚,所以这些对象可以划分成各种“类”。类行为状态按照面向对象的观点类的定义HASISDOES类声明成员变量成员方法2019/12/1901:09武汉大学珞珈学院第9页4.4.1IS说明该类“是”什么样的一个类,即说明类的名字及其性质,如一个类的父类、修饰符等,这一部分称为类声明。2019/12/1901:09武汉大学珞珈学院第10页4.4.2HAS说明这个类“有”些什么特征及属性,这些特征和属性用域变量来表示,这一部分统称为成员变量。2019/12/1901:09武汉大学珞珈学院第11页4.4.3DOES说明这个类可以“做”什么,即这个类有哪些行为,这些行为用实例方法和类方法描述,这些方法统称为成员方法。2019/12/1901:09武汉大学珞珈学院第12页4.4.4类各部分的关系ISHAS类的状态DOES类的行为由成员方法(MemberMethod)来实现2019/12/1901:09武汉大学珞珈学院第13页4.4.5类的基本形式在Java中,class是声明一个类的关键字,类名是要声明的类的名字,它必须是一个合法的Java标识符,习惯上用大写字母开头。class类名//IS{成员变量;//HAS成员方法;//DOES}2019/12/1901:09武汉大学珞珈学院第14页类声明类体变量定义构造器方法的定义垃圾回收2019/12/1901:09武汉大学珞珈学院第15页4.4.6类声明类声明定义了类的名字以及其他的属性,说明该类是(IS)什么样的一个类。类的修饰符类声明类的父类类所实现的接口2019/12/1901:09武汉大学珞珈学院第16页4.4.7类的声明方法[类修饰符]class类名称[extends父类名称][implements接口名称列表]{变量定义及初始化;方法定义及方法体;}类体,定义了该类中所有的变量(成员变量)和该类所支持的方法(成员方法)。2019/12/1901:09武汉大学珞珈学院第17页4.4.7.1类修饰符类修饰符publicabstractfinal2019/12/1901:09武汉大学珞珈学院第18页4.4.7.2public修饰符默认时,该类只能被同一个程序包中其他的类使用。public:该关键字声明的类可以在其他的任何类中使用。2019/12/1901:09武汉大学珞珈学院第19页abstract:抽象类,没有具体对象的概念类,没有具体实现功能,只用于扩展子类。4.4.7.3abstract修饰符鸟鸽子燕子抽象类具体类2019/12/1901:09武汉大学珞珈学院第20页final:最终类,表示该类已经非常具体,没有子类可扩展。4.4.7.4final修饰符2019/12/1901:09武汉大学珞珈学院第21页1.在Java中,除Object之外,每个类都有一个父类。4.4.7.5说明一个类的父类2.Object是Java语言中惟一没有父类的类,如果某个类没有声明父类,Java就认为它是Object的直接子类。因此,所有其他类都是Object的直接子类或间接子类。3.说明一个类的父类的形式为:class类名extends父类名{……//类体}4.其中extends子句认为是直接继承其后的父类,因此在类的分级结构中插入这个类。2019/12/1901:09武汉大学珞珈学院第22页1.接口定义了行为的协议,这些行为可以在处于各个层次的任何类中被实现。4.4.7.6说明一个类所实现的接口2.一个类要实现的一个或多个接口,可以使用关键字implements,并且在其后面给出由该类实现的接口的名字表,接口的名字表是以逗号分隔的多个接口。3.接口的形式为:implementsInterfaces1,Interfaces2,…,Interfacesk;4.接口可以声明多个方法和变量,但是没有这些方法的具体实现。2019/12/1901:09武汉大学珞珈学院第23页[变量修饰符]变量数据类型变量名1,变量名2[=变量初值]…;2.变量修饰符:4.5成员变量的声明1.类成员变量的定义及修饰符:[public|protected|private|package][static][final]①public、protected、private:为可访问性修饰符②static:说明该成员变量是类变量③final:说明为常量使用3.成员变量的类型可以是Java中任意的数据类型,包括简单类型,类,接口,数组。4.在一个类中的成员变量应该是唯一的。2019/12/1901:09武汉大学珞珈学院第24页public访问控制符protectedprivatedefault4.5.1访问控制符的分类2019/12/1901:09武汉大学珞珈学院第25页4.5.2publicpublic:任何其它类、对象只要可以看到这个类的话,那么它就可以存取变量的数据,或使用方法。//:co4:Dinner.javaimportco4.dessert.*;publicclassDinner{publicDinner(){System.out.println(Dinnerconstructor)}publicstaticvoidmain(String[]args){Cookiex=newCookie();x.bite();//Can'taccess}}2019/12/1901:09武汉大学珞珈学院第26页//:co4:dessert:Cookie.javapackageco4.dessert;publicclassCookie{//此处的public不能少publicCookie(){System.out.println(Cookieconstructor);}//publicbite如果声明为protected则可被子类使用protectedvoidbite(){System.out.println(bite);}}2019/12/1901:09武汉大学珞珈学院第27页4.5.3protectedprotected:同一类,同一包可以使用。不同包的类要使用,必须是该类的子类。//:co4:ChocolateChip.javaimportco4.dessert.*;publicclassChocolateChipextendsCookie{publicChocolateChip(){System.out.println(ChocolateChipconstructor);}publicstaticvoidmain(String[]args){ChocolateChipx=newChocolateChip();x.bite();//Can'taccessbite}}2019/12/1901:09武汉大学珞珈学院第28页4.5.4privateprivate:不允许任何其他类存取和调用。//:co4:IceCream.java//Demonstratesprivatekeyword.classSundae{privateintx;publicintgetX(){returnx;};privateSundae(){}staticSundaemakeASundae(){returnnewSundae();}}publicstaticclassIceCream{publicstaticvoidmain(String[]args){Sundaex=newSundae();//!不合法Sundaex=Sundae.makeASundae();//合法System.out.print(x.getX());//合法}}2019/12/1901:09武汉大学珞珈学院第29页4.5.5defaultdefault:(前边没有修饰字的情况)在同一包中出现的类才可以直接使用它的数据和方法。//:co4:Cake.javaclassCake{publicstaticvoidmain(String[]args){Piex=newPie();//类Pie也在包co4中x.f();}}2019/12/1901:09武汉大学珞珈学院第30页4.5.6访问控制符的权限对公共类的成员变量和成员方法而言,可通过施以一定的访问权限来限定其成员的应用范围,具体范围如下:同一个类中同一个包中不同包中的子类不同包中的非子类private★default★★protected★★★public★★★★2019/12/1901:09武汉大学珞珈学院第31页4.5.7访问控制符的使用范围公共类和非公共类的属性和方法的访问控制表及图示见下图:A:所有类B:包中的类D:本类C:所有子类类属性与方法public默认publicABprotectedB+CB默认BBprivateDD2019/12/1901:09武汉大学珞珈学院第32页4.6static1.属于类的变量和方法的关键字——static.2.static在变量或方法之前,表明它们是属于类的,称为类方法(静态方法)或类变量(静态变量)。3.若无static修饰,则是实例方法和实例变量。4.类变量在各实例间共享。classABCD{chardata;staticintshare_data;}classDemo{ABCDa,b,c,d;}2019/12/1901:09武汉大学珞珈学院第33页classABCD{chardata;staticintshare_data;}classDemo{ABCDa,b,c,d;}objectdchardata4.6.1static实例objectachardataobjectcchardataObjectbchardatastaticintshare_data2019/12/1901:09武汉大学珞珈学院第34页publicclassStaticVar{publicstaticintnumber=5;}publicclassOtherClass{publicvoidmethod(){intx=StaticVar.number;}}类变量的生存期不依赖于对象的实例,其它类可以不通过对象实例访问它们。甚至可以在它的类的任何对象创建之前访问。4.
本文标题:第4章类与对象.
链接地址:https://www.777doc.com/doc-2109905 .html