进一步讨论对象和类.ppt
《进一步讨论对象和类.ppt》由会员分享,可在线阅读,更多相关《进一步讨论对象和类.ppt(30页珍藏版)》请在三一办公上搜索。
1、第 五 章,2023/5/28,1,进一步讨论对象和类,2,第五章 进一步讨论对象和类,5.1 Java中方法及类的访问规则5.2 Java中的按值传送5.3 Java中的抽象类、接口和程序包5.4 对象的构造函数5.5 内部类,3,5.1 Java中方法及类的访问规则,public class AccessInClass1 int sex;void m1()sex=1;int m2()sex=2;return sex;void m3()m1();m2();,前提:若某个方法可直接访问其它成员,该方法不能是静态的,即方法前面不能有static关键字。,4,5.1 Java中方法及类的访问规则,
2、public class AccessInClass2 int sex;static int salary;void m1()sex=1;salary=1;int m2()sex=2;salary=2;return sex;void m3()m1();m2();m4();m5();static void m4()static void m5()AccessInClass2 aic=new AccessInClass2();aic.m1();aic.m2();aic.m3();aic.m4();m4();/m1();/error/m2();/error/m3();/error aic.sex=3
3、;aic.salary=3;alary=3;/sex=3;error,注意:非静态方法访问静态或非静态成员方式一样,可直接访问。静态方法访问非静态成员必须创建对象。静态方法可不创建对象,直接访问静态成员和静态方法,也可创建对象来访问。,5,5.1 Java中方法及类的访问规则,public class AccessOtherClass1 void m1()OtherClass1 oc1=new OtherClass1();oc1.sex=1;System.out.println(“sex=”+oc1.sex);public static void main(String args)OtherC
4、lass1 oc2=new OtherClass1();oc2.sex=0;System.out.println(“sex=”+oc2.sex);oc2.m2();class OtherClass1 int sex;void m2()System.out.println(“m2()”);,注意:文件中包含两个或以上类,那只能有一个类前加public关键字,且文件名必须与这个类名一致。AccessOtherClass1访问OtherClass1,无论何情况下,都需创建该类对象才可以访问它的成员(域或方法)。若两个类名前都没有public,可以以任何名字把文件存盘。,6,5.2 Java中的按值传
5、送,当“按值”传送自变量时,方法调用不会改变自变量的值。当对象实例作为自变量传送给方法时,自变量的值是对象的引用可修改该引用指向的对象内容。(P93),7,public void changeStr(String value)System.out.println(before value is:+value);value=new String(different);System.out.println(after value is:+value);public void changeObjValue(PassTest ref)System.out.println(before ref.ptVa
6、lue is:+ref.ptValue);ref=new PassTest();ref.ptValue=99f;System.out.println(after ref.ptValue is:+ref.ptValue);,8,5.3 Java中的抽象类、接口和程序包,抽象类是指不能直接被实例化的类。一般作为其它类的超类,与final类正好相反。抽象类中的抽象方法在该类中定义但不在该类中提供实现,由继承类提供细节。public abstract class SomeAbstractClass void method1()System.out.println(“Hi,Java”);abstract
7、 void method2();,public abstract class SomeAbstractClass1 abstract void method1();abstract void method2();,9,5.3 Java中的抽象类、接口和程序包,抽象类的定义格式为:public abstract class 类名.抽象类方法的定义格式为:public abstract(参数表);抽象类不能创建实例,由非抽象类的子类创建定义抽象方法的类必须是抽象类。对于抽象方法不允许使用final修饰abstract方法,10,5.3 Java中的抽象类、接口和程序包,/两个类Circle和Rec
8、tangle,完成相关参数的计算 class Circle public int r;Circle(int r)this.r=r/this指这个对象的 public int area()return 3*r*r;/取近似 class Rectangle public int width,height;/这里不需this Rectangle(int w,int h)width=w,height=h;public int area()return width*height;,11,5.3 Java中的抽象类、接口和程序包,假设有若干个Circle,以及若干个Rectangle,希望计算它们的总面积
9、,直截了当的做法是将它们分别放到两个数组中,用两个循环,加上一个加法,这种做法是不漂亮的。如果还有其它形状,如triangle,ellipses等,上述方法显得“累赘”,我们希望有一种统一的表示,例如用一个数组shape,接受所有的形状,然后用 for(i=0;ishape.length;i+)area_total+=shapei.area();,12,abstract class Shape abstract float area();class Circle extends Shape public int r;Circle(int r)this.r=r;public float area
10、()return 3.14*r*r;class Square extends Shape public int width,height;Rectangle(int w,int h)width=w,height=h;public float area()return width*height;,13,5.3 Java中的抽象类、接口和程序包,利用接口可实现多重 继承(子类可同时实现多个接口)。接口的作用和抽象类 类似,指定原型,不直 接定义方法的内容。关键字implement用 来实现方法,即在使用时要用给出方法的实际内容。接口中的方法和变量 是public的。,interface Stack
11、 void push(object x);object pop();,class A extends Applet implements Stack void push(object x);/具体内容 object pop();/具体内容,14,5.3 Java中的抽象类、接口和程序包,接口的声明格式为:接口修饰符 interface 接口名称 extends父类名.接口中定义的成员变量都必须赋初值,系统默认为终极类变量,即自动增加final与static关键字。接口与类的继承不同之处在于实现接口的类不从该接口的定义中继承任何行为,在实现过程中,这个类还可同时实现其它接口。完成接口的类须实现接
12、口中的所有抽象方法。,15,5.3 Java中的抽象类、接口和程序包,程序包:相当于其它语言中的库函数。打包,package graphics;class Square;class Circle;class Triangle;,使用程序包中的类要用import命 令。表示路径,*表示使用包中的 所有类。;import java.io.*;,16,5.4 对象的构造函数,class Demo1/数组的配置 public static void main(String args)int array;array=new int55;array14=5;,class MyClass/对象实体的产生 i
13、nt data=5;class Demo2 public static void main(String args)MyClass obj;/建立一个引用 obj=new MyClass();System.out.println(obj.data);,17,5.4 对象的构造函数,constructor(构造函数),在一个类中和类同名的方法叫构造函数。系统在产生对象时会自动执行。,class Point int x,y;Point()x=0;y=0;Point(int new_x,int new_y)x=new_x;y=new_y;,class UsePoint Point point_A=n
14、ew Point();Point point_B=new Point(5,7);,18,5.4 对象的构造函数,构造函数应包含哪些内容?构造函数多半定义一些初值或内存配置工作,一个类可以有多个构造函数(重载),根据参数的不同决定执行哪一个。如果程序中没有定义构造函数,则创造实例时使用的是缺省函数,它是一个无内容的空函数。若类为public,但是构造方法为private,那么在其它类中也不能创建该类的对象。即若不想让别人访问一个类,可用private修饰它的构造方法,19,5.4 对象的构造函数,thisthis是Java中的一个关键字,指自己这个对象。this的作用是要将自己这个对象当作参数,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 进一步 讨论 对象
链接地址:https://www.31ppt.com/p-4997391.html