第三章面向对象程序设计基础(2)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第三章面向对象特性2020/1/21主要内容封装性•包的使用•访问控制符类的重用•继承•组合2020/1/21一、包的使用包(package)管理类名空间,解决类名冲突组织相关的类,并控制访问权限同一包中的类可以互相访问包的组织结构与文件系统的结构类似2020/1/21假设\com为当前目录TV.class保存在目录\com\yeu下TV.class在包com.yeu中comyeudemoTV.classCar.classDm1.classDm2.class2020/1/21包的声明packagemypackage;Java源文件的第一条语句一个文件中最多只能有一条说明当前文件中的类属于包mypackage包名通常全部为小写字母,如com.yeu2020/1/21packagecom.yeu;publicclassTV{……}编译:javac–d.TV.java编译成功:在当前目录下生成com\yeu子目录,并把生成的.class放入该子目录中例如:PackageDemo.java—演示编译和生成包、import语句的使用2020/1/21packagecom.yeu;publicclassTV{……}packagecom.demo;publicclassPackageDemo{voidcreate(){TVmyTv=newTV();}}importcom.yeu.TV;2020/1/21二、访问控制符Java的访问控制符包括:•public:公共的•protected:受保护的•default:默认的,在程序中可省略•private:私有的•可以用于修饰类中的成员变量和成员方法,控制对该成员的访问2020/1/21packagecom.yeu;publicclassTV{privateStringbrand;privateStringscreen;publicvoidturnOn(){System.out.println(“turnon!”);}voidshutDown(){//defaultSystem.out.println(“shutdown!”);}}2020/1/21控制符的访问权限private:类中限定为private的成员,只能被这个类本身访问default:属于缺省的访问状态,可以被这个类本身和同一个包中的其它类所访问。public:可以被所有的类访问例如:AccessDemo.java-演示访问控制符的使用。2020/1/21packagecom.demo;importcom.yeu.TV;publicclassAccessDemo{publicstaticvoidmain(String[]args){TVmyTv=newTV(“LG”,“29”);myTv.brand=“Acer”;//privatemyTv.turnOn();//publicmyTv.shutDown();//default}}2020/1/21三、类的继承继承一种由“已有类”创建“新类”的机制,是面向对象程序设计的基石之一通过继承,“新类”拥有“已有类”的成员变量和成员方法通常把“已有类”称为“父类”,把“新类”称为“子类”2020/1/21isakindof关系学生大学生isakindof员工管理人员isakindof2020/1/21在公司中,有普通员工(Employee)及管理者(Manager)两类人员Employee可能有的属性信息:•员工号(employeeNumber)•姓名(name)•地址(address)•电话号码(tel)Manager具有以上属性外,还可能具有:•职责(responsibility)•所管理的职员(listOfEmployee)2020/1/21publicclassEmployee{publicStringemployeeNumber;publicStringname;publicStringaddress;publicStringtel;publicdoublecountSalary(){System.out.println(“Employee$”);return10000;}}2020/1/21继承的语法格式classChildClassextendsParentClass{//类体}说明:关键字extends说明要声明的类需要继承父类的属性和行为parentClass是被继承的父类名称2020/1/21publicclassManagerextendsEmployee{privateStringresponsibility;privateVectorlistOfEmployee;publicvoidshowMsg(){System.out.println(name+address);System.out.println(countSalary());}}说明:子类可以使用其父类中声明为公有的属性和方法2020/1/21方法重写(methodoverriding)子类中实现与父类相同的功能,但采用不同的算法或公式,这时需要方法重写重写方法的返回类型,方法名称,参数的个数及类型必须和被重写的方法一摸一样例如:管理者和普通员工的工资计算方式不一样,在继承时要重写countSalary()方法2020/1/21publicclassManagerextendsEmployee{privateStringresponsibility;privateArrayListlistOfEmployee;publicdoublecountSalary(){System.out.println(“Manager$”);return10000+20000;}/*publicdoublecountSalary(){System.out.println(“Employee$”);return10000;}*/}2020/1/21OverridingDemo.java--演示重写方法的调用publicclassOverridingDemo{publicstaticvoidmain(String[]args){Employeezhang=newEmployee();zhang.countSalary();//return10000Managerwu=newManager();wu.countSalary();//return10000+20000}}2020/1/21四、类的组合组合现实世界中,大多数对象由更小的对象组成与现实世界的对象一样,软件中的对象也常常是由更小的对象组成Java的类中可以有其他类的对象作为成员,这便是类的组合2020/1/21has关系hashashas2020/1/21定义汽车(Car)类假设Engine类,Wheel类,Door类如下://发动机类publicclassEngine{publicvoidstart(){}publicvoidstop(){}publicvoidspeedUp(){}}2020/1/21//车轮类publicclassWheel{publicvoidinflate(intpsi){}}//车门类publicclassDoor{publicvoidopen(){}publicvoidclose(){}}2020/1/21publicclassCar{publicEngineengine=newEngine();publicWheel[]wheel=newWheel[4]publicDoorleft=newDoor();publicDoorright=newDoor();publicCar(){//initialize}publicstaticvoidmain(String[]args){Carcar=newCar();car.left.open();car.wheel[0].inflate(72);}}

1 / 25
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功