欢迎来到天天文库
浏览记录
ID:44774556
大小:837.50 KB
页数:36页
时间:2019-10-28
《JAVA面向对象编程(3_2)》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、第四章面向对象-2继承上转型多态课程安排访问权限类有2种重要的成员:成员变量和方法。类创建的对象可以通过“.”运算符访问分配给自己的变量,也可以通过“.”运算符调用类中的实例方法和类方法。类在定义声明成员变量和方法时,可以用关键字private、protected和public来说明成员变量和方法的访问权限,使得对象访问自己的变量和使用方法受到一定的限制。1.私有变量和私有方法用关键字private修饰的成员变量和方法被称为私有变量和私有方法。对于私有成员变量或方法,只有在本类中创建该类的对象时,这个对象才能访问自己的私有成员变量和类中的私有方法访问权限访问权限classEmplo
2、yee{privatedoublesalary=1800;//私有属性,类外无法访问publicvoidsetSalary(doublesalary){if(salary>1800&&salary<=6000){this.salary=salary;}}}publicclassExample{publicstaticvoidmain(Stringargs[]){Employeezhang=newEmployee();Employeewang=newEmployee();zhang.setSalary(100);System.out.println("zhang的薪水:"+zhang
3、.getSalary());wang.setSalary(3888);//wang.salary=88888;是非法的,因为对象wang已经不在Employee类中System.out.println("wang的薪水:"+wang.getSalary());}}用某个类在另外的一个类中创建对象后,如果不希望该对象直接访问自己的变量(即通过“.”运算符来操作自己的成员变量),就应将该变量访问权限设置为private。面向对象编程提倡对象应当调用方法来改变自己的属性,我们应当提供操作数据的方法,这些方法可以经过精心设计,使得对数据的操作更加合理。2.公有变量和公有方法用public修
4、饰的成员变量和方法被称为共有变量和共有方法,如:classA{publicfloatweight;//weight被修饰为public的float型变量。publicfloatf(floata,floatb){//方法f是public方法。}}访问权限当我们在任何一个类中用类A创建了一个对象后,该对象能访问自己的public变量和类中的public方法。如:classB{voidg(){Aa=newA();a.weight=23f;//合法a.f(3,4);//合法}}3.受保护的成员变量和方法用protected修饰的成员变量和方法被称为受保护的成员变量和受保护的方法,如:cla
5、ssA{protectedfloatweight;//weight被修饰为public变量。protectedfloatf(floata,floatb){//f是public方法。…}}访问权限假如B与A是同一个包中的类,那么,B类中的a.weight、a.f(3,4)都是合法的。classB{voidg(){Toma=newTom();a.weight=23f;//合法a.f(3,4);//合法}}对象a的位置Private成员默认的成员protected成员public成员在类A中,a访问成员√√√√在与A同包的另外一个类中,a访问成员×√√√在与A不同包的另外一个类中,a访问
6、成员×××√假设对象a是类A创建的,对象对成员的访问权限总结如下:一个类可以把对象作为自己的成员变量,如果用这样的类创建对象,那么该对象中就会有其它对象,也就是说该对象将其他对象作为自己的组成部分,或者说该对象是由几个对象组合而成。对象的组合对象的组合publicclassRectangle{privatedoublex,y,width,height;publicvoidsetX(doublex){this.x=x;}publicdoublegetX(){returnx;}….}publicclassCircle{privatedoublex,y,radius;publicvoid
7、setX(doublex){this.x=x;}publicdoublegetX(){returnx;}…}publicclassGeometry{privateRectanglerect;privateCirclecircle;Geometry(Rectanglerect,Circlecircle){this.rect=rect;this.circle=circle;}publicvoidsetCirclePosition(doublex,doubley){circ
此文档下载收益归作者所有