当前位置:网站首页 > Java基础 > 正文

java程序设计基础答案6



六、重载与多态

1.判断:接口中的所有方法都没有被实现。()

2.方法重载是指 ( )

A.两个或两个以上的方法取相同的方法名,但形参的个数或类型不同

B.两个以上的方法取相同的名字和具有相同的参数个数,但形参的类型可以不同

C.两个以上的方法名字不同,但形参的个数或类型相同

D.两个以上的方法取相同的方法名,并且方法的返回类型相同

3.什么是方法的覆盖?方法的覆盖与域的隐藏有何不同?与方法的重载有何不同?

4.解释this和super的意义和作用。

5.什么是多态?面向对象程序设计为什么要引人多态的特性?使用多态有什么优点?

6.Java程序如何实现多态?有哪些方式?

7.根据下面的要求编程实现复数类ComplexNumber。

(1)复数类ComplexNumber的属性

·m_dRealPart实部,代表复数的实数部分。

·m_dlmaginPart虚部,代表复数的虚数部分。

(2)复数类ComplexNumber的方法

·ComplexNumber()构造方法,将实部、虚部都置为0。

·ComplexNumber(doubler,doublei)构造方法,创建复数对象的同时完成复数的实部、虚部的初始化;r为实部的初值,i为虚部的初值。

java程序设计基础答案6

·getRealPart()获得复数对象的实部。

·getlmaginaryPart()获得复数对象的虚部。

·setRealPart(doubled)把当前复数对象的实部设置为给定的形参的数字。

·setlmaginaryPart(doubled)把当前复数对象的虚部设置为给定形参的数字。

·complexAdd(ComplexNumberc)当前复数对象与形参复数对象相加,所得的结果也是复数值,返回给此方法的调用者。

·complexAdd(doublec)当前复数对象与形参实数对象相加,所得的结果仍是复数值,返回给此方法的调用者。

·complexMinus(ComplexNumberc)当前复数对象与形参复数对象相减,所得的结果也是复数值,返回给此方法的调用者。

8.什么是接口?为什么要定义接口?接口与类有何异同?

9.一个类如何实现接口?实现某接口的类是否一定要重载该接口中的所有抽象方法?

10.接口是否可以被继承?阅读下面的代码,试写出SubInterface中的抽象方法。

interface SupInterface

{

public abstract int supMethod();

}

interface SubInterface extends SupInterface

{

public abstract string subMethod();

}

参考答案:

1. true

2.A

3.答:子类重新定义父类中已经存在的方法,称为方法的覆盖。注意:方法覆盖与域的隐藏不同。子类重新定义父类已有的域,并不能完全取代它从父类那 里继承的同名的域,这个域仍然占用子类的内存空间,在某些情况下会被使用;而当子类重新定义父类的方法时,从父类那里继承来的方法将被新方法完全取代,不 再在子类的内存空间中占一席之地。与方法的覆盖不同,重载不是子类对父类同名方法的重新定义,而是在一个类中定义了同名的不同方法。

4.答:关键字this指代当前类的当前对象,关键字super指代当前类的直接父类对象。

5.答:一个类中存在多个同名的方法,称为多态。把抽象功能和目的相同,而具体实现因不同情况而异的方法命名为同名方法,符合面向对象程序设计中抽象、提升概念,封装、隐藏细节的特点,从而提高了程序的简洁性和可读性,降低了类和程序模块直接的相互耦合和依赖。

6.答:Java程序通过覆盖和重载两种方式来实现多态。覆盖是子类重新定义父类中已有的方法,重载是在一个类内部定义与已存在的方法同名但是参数列表不同的方法。

7.答:

public class ch5_e5_12

{

public static void main(String args[])

{

ComplexNumber cNumber_1 =

new ComplexNumber(3,-5);

ComplexNumber cNumber_2 =

new ComplexNumber(2,2);

double d = 10.0;

System.out.println(cNumber_1.toString() + " 加 "

+ cNumber_2.toString() + " 等于 "

+ cNumber_1.complexAdd(cNumber_2).toString());

System.out.println(cNumber_1.toString() + " 加 "

+ d + " 等于 "

+ cNumber_1.complexAdd(d).toString());

System.out.println(cNumber_1.toString() + " 减 "

+ cNumber_2.toString() + " 等于 "

+ cNumber_1.complexMinus(cNumber_2).toString());

System.out.println(cNumber_1.toString() + " 减 "

+ d + " 等于 "

+ cNumber_1.complexMinus(d).toString());

System.out.println(cNumber_1.toString() + " 乘 "

+ cNumber_2.toString() + " 等于 "

+ cNumber_1.complexMulti(cNumber_2).toString());

System.out.println(cNumber_1.toString() + " 乘 "

+ d + " 等于 "

+ cNumber_1.complexMulti(d).toString());

}

}

class ComplexNumber

{

//域

private double m_dRealPart;

private double m_dImaginPart;

//构造方法

ComplexNumber()

{

m_dRealPart = 0.0;

m_dImaginPart = 0.0;

}

ComplexNumber(double r,double i)

{

m_dRealPart = r;

m_dImaginPart = i;

}

ComplexNumber(ComplexNumber c)

{

m_dRealPart = c.getRealPart();

m_dImaginPart = c.getImaginaryPart();

}

//get,set方法

double getRealPart()

{

return m_dRealPart;

}

double getImaginaryPart()

{

return m_dImaginPart;

}

void setRealPart(double d)

{

m_dRealPart = d;

}

void setImaginaryPart(double d)

{

m_dImaginPart = d;

}

//复数运算方法

ComplexNumber complexAdd(ComplexNumber c)

{

return new ComplexNumber(

this.m_dRealPart + c.getRealPart(),

this.m_dImaginPart + c.getImaginaryPart());

}

ComplexNumber complexAdd(double c)

{

return new ComplexNumber(

this.m_dRealPart + c, this.m_dImaginPart);

}

ComplexNumber complexMinus(ComplexNumber c)

{

return new ComplexNumber(

this.m_dRealPart - c.getRealPart(),

this.m_dImaginPart - c.getImaginaryPart());

}

ComplexNumber complexMinus(double c)

{

return new ComplexNumber(

this.m_dRealPart - c, this.m_dImaginPart);

}

ComplexNumber complexMulti(ComplexNumber c)

{

return new ComplexNumber(

this.m_dRealPart * c.getRealPart()

- this.m_dImaginPart * c.getImaginaryPart(),

this.m_dRealPart * c.getImaginaryPart()

+ this.m_dImaginPart * c.getRealPart());

}

ComplexNumber complexMulti(double c)

{

return new ComplexNumber(

this.m_dRealPart * c, this.m_dImaginPart * c);

}

//toString()

public String toString()

{

return "(" + m_dRealPart + " + "

+ m_dImaginPart + " i" + ")";

}

}

8.答:接口是用来实现类间多重继承功能的结构。接口与类相似,但是接口中只能包括常量和抽象方法。定义接口相当于定义了一组抽象的功能、属性集合,可以使了ava程序的类层次结构更加合理,并实现多重继承。

9.答:使用关键字implements可以定义类实现某接口。实现某接口的类如果不是抽象类,则需要通过重载来实现该接口中的所有抽象方法;如果这个类是抽象类,则它可以不必实现该接口中的所有抽象方法。

10.答:接口可以被继承。

版权声明


相关文章:

  • java编程基础入库 湖南岚鸿2024-10-25 20:26:00
  • java基础聊天室设计目的2024-10-25 20:26:00
  • java基础马士兵视频教程2024-10-25 20:26:00
  • java基础数二维数组2024-10-25 20:26:00
  • java基础学习路线app2024-10-25 20:26:00
  • 零基础java前端开发2024-10-25 20:26:00
  • java基础班好学吗2024-10-25 20:26:00
  • java基础可以开发app2024-10-25 20:26:00
  • 数据结构java基础2024-10-25 20:26:00
  • Android开发所需的java基础2024-10-25 20:26:00