JAVA程序设计实训报考.doc_第1页
JAVA程序设计实训报考.doc_第2页
JAVA程序设计实训报考.doc_第3页
JAVA程序设计实训报考.doc_第4页
JAVA程序设计实训报考.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实 验 六(一)实验题目:类的封装与继承(二)实验目的:1、理解物理世界和面向对象编程中的封装和继承思想。 2、掌握封装和继承在Java中的语法规则和结论,并灵活运用进行编程。(三)实训案例: 1、private修饰的成员只能在同类的内部被访问;private成员不能被继承。 2、默认访问修饰符的成员只能被同包下的类访问。 3、protected只能修饰成员属性或方法,不能修饰类;protected成员可以被同包下其他类访 问,也可以被不同包下的子类访问。 4、类的继承只允许单继承。 5、构造方法不允许被继承。(四)代码实现: 1、private成员只能在同类的内部被访问: package pgfive;class PrivateTestprivate String s=abc;private void access() System.out.println(s); /从内部访问,合法 public void f1() System.out.println(s); access(); public void f2(PrivateTest t) String ss=t.s; /从内部可以直接访问:t.s System.out.println(ss); public void setS(String ps) s=ps; classT public static void main(String args) PrivateTest t = new PrivateTest(); t.f1(); t.s; /从外部访问,非法 t.setS(def); new PrivateTest().f2(t); 2、private成员不能被继承:class A private String s=abc; private void func() System.out.println(This is a private method.); class B extends A public void fB() System.out.println(s); func(); public static void main(Stringargs) new B().fB(); 3、编译出错:PrivateInherit.java:10: s 可以在A中访问 privateSystem.out.println(s); PrivateInherit.java:11:找不到符号符号:方法func()位置:类Bfunc(); 2错误从上面的编译错误信息第一行可以推知:A、B类源代码是放在了一个文件PrivateInherit.java中的。(五)实验心得: 通过实验了解到,验证一条结论,有些需要从正反两面来验证。先从同包下的类的来访问,这是允许的,在从异包下的类来访问,这是不允许的。 实 验 七(一)实验题目:类的多态(二)实验目的:1、理解物理世界和面向对象编程中的多态思想。 2、掌握多态在Java中的语法规则和结论,并灵活运用进行编程。(三)实训案例: 1、重载方法对修饰符列表、返回类型是否相同不作要求,区别仅仅在于参数列表。 2、在一个重载方法内可以直接调用另外一个重载方法,但重载的构造方法则不能直接调用, 必须使用this。 3、被覆盖的方法名、返回类型、参数列表必须相同。 4、对覆盖而言,子类方法的访问修饰符=父类方法的访问修饰符。 5、父类中的覆盖方法的修饰符不能是final、static。(四)结论验证:1、结论验证1public class classA public void func(int a) /原方法/*下面都是不正确的重载*/public String func(int a)( /返回类型不同return null;) protected void func(int a) /访问修饰符号不同int func(int b) /行参不同,返回类型不同 return 0;/*下面是正确的重载*/void func(long a)private int func(String s)return 0; 编译出错:OverloadModify.java:6:已在A中定义func(int)public String func(int a )/返回类型不同 OverloadModify.java:9:已在A中定义func(int)protected void func(int a)/访问修饰符号不同 OverloadModify.java:11:已在A中定义func(int) int func(int b)/行参不同,返回类型不同 3错误2、结论验证2class A void func() func(abc); void func(String s) System.out.println(s); A() A(sss); /把该方法当作非构造方法,即一般的功能方法来调用 /修改方式有两种:定义有关功能方法void A(String s) /或改为这样调用 this.A(sss); A(String s) System.out.println(s); 编译出错:OverloadConstructor.java:10:找不到符号符号: 方法A(java.lang.String)位置: 类AA(sss);1错误3、结论验证3class A String str=A; protected void func(String s) System.out.print(s); System.out.println(t+str); class B extends A String str=B; public void func(String a) System.out.print(a); System.out.println(t+str); public static void main(String a) new B().func(Hello); 其运行正确,输出结果为:Hello B(五)实验心得: 根据本次实验,了解到形参不同,返回类型不同。编译中找不到符号,修改后,仍有点错误。像上例中,A.func()被继承到B中,然后与修改参数后的func()形成重载,而不再是覆盖了。 实 验 八(一)实验题目:接口与抽象类(二)实验目的:1、理解接口与抽象类的思想。 2、掌握掌握接口与抽象类在Java中的语法规则和结论,并灵活运用进行编程。(三)实训案例: 1、接口中的属性默认为static和final,方法默认为abstract。 2、接口中的成员不允许为private,默认为public。 3、接口允许多继承。 4、抽象类中可以没有抽象方法。 5、含有抽象方法的类必须声明为抽象类。 6、抽象类与非抽象类具有相同的继承规则和Java接口实现规则。(四)结论验证:输入程序:public interface IField int t=1;class T implements IField /* public void test() t=10; /若该行可以正确执行,则说明t不被final修饰的 */ public static void main(String args) System.out.println(IField.t); /可以直接访问,说明t是被static修饰的 /new T().test() 编译运行正确,说明成员变量t可以直接通过接口名来访问,说明t是被static修饰的。验证结论2给上面程序的属性和方法添加访问修饰符private,再编译,则报错:Imember.java:2: 此处不允许使用修饰符private private int t=1; Imember,java:3: 此处不允许使用修饰符private private String f(); 2错误这说明接口的成员不允许使用private修饰。去掉该程序中的private修饰符,然后添加一个实现类,如下:interface Imember int t=1; String f();class Imember Imp1 implements Imember String f() returnabc; 编译报错:Imember,java:7:ImemberImberImpl中的f()无法实现Imember中的f();String f() 11错误这说明接口的成员方法默认的访问修饰符为public。验证结论3下面来验证结论(3)。输入程序:interface IA void fa(); interface IB void fb(); interface IC extends IA,IB/接口间的多继承 void fc();class CA implements IA/一个类实现了一个接口 public void fa() /注意:这里必需使用public System.out.println(IA-CA) class CC implements IA,IB/一个类实现了一个接口 public void fa() System.out.println(IA-CC) public class Iextends/测试 public static void main(Stringargs) new CA().fa(); CC c=new CC(); c.fa(); c.fb(); 编译、运行正确,从而验证了结论3。(五)实验心得: 本次的java实验,注重理解接口与抽象类的思想。在实验中,从而能掌握掌握接口与抽象类在Java中的语法规则和结论,并灵活运用进行编程。 其中接口的运用也有许多的规则,理解抽象类的含义。 实 验 九(一)实验题目: 引用类型的类型转换(二)实验目的:1、结合基本类型的类型转换,掌握引用类型的类型转换规则。 2、综合掌握掌握面向对象程序的设计与实现的思想、方法和步骤。(三)实训案例: 引用类型的类型转换可以概括为: 引用对象的类型转换只允许在具有继承关系(extends)或现实关系 (implement)的类型之间发生,即只允许在该对象及其祖先类型之前进行转 换。因此可以设计接口和类。然后创建C对象,让其在接口IA、IB,类A、B 之间进行转换,这是正确的,而与D类型进行转换则出错。具体如下程序验 证:(四)程序验证:package pgeighit;interface IA public void f();interface IB extends IApublic void g();class A implements IBpublic void print(String s)System.out.println(s);public void f()print (A.f();public void g()print (A.g();class B extends Aclass C extends Bpublic void f()print (C.f();public void g()print (C.g();class D extends Apublic void f()print (D.f();public void g()print (D.g();class E extends Cpublic void f()print (D.f();public void g()print (D.g();public class ConvertRefpublic static void main(String args)C c=new C();c.f();B b=c;b.f();A a=c;a.f();IB ib=c;ib.f();IA ia=c;ia.f();b=(B)ia;b.f();c=(C) ia;c.f();D d=(D)ia; /错误,因为ia指向的对象是CE e=(E)ia; /错误,因为E is C

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论