进一步讨论对象和类.pptx
第五章2025/5/11进一步讨论对象和类
第五章进一步讨论对象和类25.1Java中方法及类的访问规则5.2Java中的按值传送5.3Java中的抽象类、接口和程序包5.4对象的构造函数5.5内部类
35.1Java中方法及类的访问规则publicclassAccessInClass1{intsex;voidm1(){sex=1;}intm2(){sex=2;returnsex;}voidm3(){m1();m2();}}前提:若某个方法可直接访问其它成员,该方法不能是静态的,即方法前面不能有static关键字。
45.1Java中方法及类的访问规则publicclassAccessInClass2{intsex;staticintsalary;voidm1(){sex=1;salary=1;}intm2(){sex=2;salary=2;returnsex;}voidm3(){m1();m2();m4();m5();}staticvoidm4(){}staticvoidm5(){AccessInClass2aic=newAccessInClass2();aic.m1();aic.m2();aic.m3();aic.m4();m4();//m1();//error//m2();//error//m3();//erroraic.sex=3;aic.salary=3;alary=3;//sex=3;error}}注意:非静态方法访问静态或非静态成员方式一样,可直接访问。静态方法访问非静态成员必须创建对象。静态方法可不创建对象,直接访问静态成员和静态方法,也可创建对象来访问。
55.1Java中方法及类的访问规则publicclassAccessOtherClass1{voidm1(){OtherClass1oc1=newOtherClass1();oc1.sex=1;System.out.println(“sex=”+oc1.sex);}publicstaticvoidmain(Stringargs[]){OtherClass1oc2=newOtherClass1();oc2.sex=0;System.out.println(“sex=”+oc2.sex);oc2.m2();}}classOtherClass1{intsex;voidm2(){System.out.println(“m2()”);}}注意:文件中包含两个或以上类,那只能有一个类前加public关键字,且文件名必须与这个类名一致。AccessOtherClass1访问OtherClass1,无论何情况下,都需创建该类对象才可以访问它的成员(域或方法)。若两个类名前都没有public,可以以任何名字把文件存盘。
5.2Java中的按值传送6当“按值”传送自变量时,方法调用不会改变自变量的值。当对象实例作为自变量传送给方法时,自变量的值是对象的引用可修改该引用指向的对象内容。(P93)
7publicvoidchangeStr(Stringvalue){System.out.println(beforevalueis:+value);value=newString(different);System.out.println(aftervalueis:+value); }publicvoidchangeObjValue(PassTestref){System.out.println(beforeref.ptValueis:+ref.ptValue);ref=newPassTest();ref.ptValue=99f;System.out.println(afterref.ptValueis:+ref.ptValue); }
85.3Java中的抽象类、接口和程序包抽象类是指不能直接被实例化的类。一般作为其它类的超类,与final类正好相