Java语言程序设计(郑莉)第四章课后习题答案

  • 格式:docx
  • 大小:113.54 KB
  • 文档页数:11

下载文档原格式

  / 27
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java语言程序设计

第四章课后习题答案

1.子类将继承父类所有的属性和方法吗?为什么?

答:不,子类不能直接访问从父类中继承的私有属性及方法,但可以对公有及保护方法进行访问。

2.方法的覆盖与方法的重载有何不同?

答:覆盖是运用在子类中实现与父类相同的功能,但采用不同的算法或公式;在名字相同的方法中,要做比父类更多的事情;在子类中需要取消从父类继承的方法。

3.声明两个带有无参构造方法的两个类A和B,声明A的子类C,并且声明B为C的一个成员,不声明C 的构造方法。编写测试代码,生成类C的实例对象,并观察结果。

//A类

public class A {

public A () {

System.out.println ("输出A类");

}

}

//B类

public class B {

public B () {

System.out.println ("输出B类");

}

}

//C类

public class C extends A {

B b = new B ();

}

//测试类

public class test4_3 {

public static void main (String args[]) {

C c = new C();

}

}

运行结果:

4.声明一个基类A,它只有一种非默认构造方法;声明A的子类B,B具有默认方法及非默

认方法,并在B的构造方法中调用基类A的构造方法。

//A类

public class A {

public A (String lin) {

System.out.println("A类的非默认构造方法 "+lin);

}

}//B类

public class B extends A{

public B () {

super ("Fuck your teacher");

System.out.println ("B默认类构造方法");

}

public B (String lin) {

super (lin);

System.out.println ("B类非构造方法");

}

}//测试类

public class test4_4 {

public static void main (String args[]) {

new B();

System.out.println ();

new B("Fuck my teacher");

}

}

运行结果:

5.声明一个类,它具有一种方法,此方法被重载三次,派生一个新类,并增加一种新的重载方法,编写测试类验证四种方法对于派生类验证四种方法对于派生类都有效。

//A类

public class A {

public void showTime () {

System.out.println ("空重载");

}

public void showTime (int l) {

System.out.println ("整形参数重载");

}

public void showTime (char l) {

System.out.println ("字符参数重载");

}

}

//B类

public class B extends A {

public void showTime (String l) {

System.out.println ("字符串参数重载");

}

}

//测试类

public class test4_5 {

public static void main (String args[]) {

B b = new B();

b.showTime();

b.showTime(5);

b.showTime('f');

b.showTime("林楚金");

}

}

6.声明一个具有final方法的类,声明一个派生类,并试图对这个方法进行重写,会有什么结果。

//A类

public class A {

public final void showTime() {

System.out.println ("类A中方法");

}

}

//B类

public class B extends A{

public void showTime() {

System.out.println ("类B中方法");

}

}

//测试类

public class test4_6 {

public static void main (String args[]) {

B b = new B();

b.showTime();

}

}

运行结果:

(说白了就是B中showTime()的无法覆盖A中showTime(),被覆盖为final,不能覆盖。)

7.声明一个final类,并试图声明其派生类,会有什么结果。

//A类

public final class A {

}

//B类

public class B extends A{

}

//测试类

public class test4_7 {

public static void main (String args[]) {

B b = new B();

}

}

运行结果: