第七章 判断题-面向对象2.doc_第1页
第七章 判断题-面向对象2.doc_第2页
第七章 判断题-面向对象2.doc_第3页
第七章 判断题-面向对象2.doc_第4页
第七章 判断题-面向对象2.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

第七章 判断题1.子类可以从多个超类中派生出来。( )2.protected类型的实例变量或方法只能有声明该变量或方法的类本身及其子类访问。( )3.当一个超类成员不适合该子类时,子类会以恰当的方式重新定义它。( )4.超类对象的集合通常比它的任何一个子类对象集合大。( )5.Java的每个子类的构造函数都要显式的调用它的直接超类的构造函数。( )6.在子类中可以用完全相同的signature重新定义一个超类方法,这称为方法的覆盖(override)。( )7.对子类实例化对象需要调用超类的构造函数进行初始化工作,完成对子类中的超类实例变量的初始化,则子类可以继承超类的构造函数。( )8.声明为final的类不能是超类。( )9.抽象类可以实例化对象。( )10.Java提供了一种称为“内部类”的机制,使类可以在其他类中定义。( )第七章 选择题1.如果超类不允许其通过继承的方式产生的子类访问它的某些成员,那么它必须以什么方式声明该成员。A. publicB. privateC. protectedD. static2.如果在你的类的层次结构的类中定义了finalize方法,它总是被定义为什么类型以便子类能访问该方法。A. publicB. privateC. protectedD. static3.声明为final的变量不能在子类中覆盖,声明为( )和( )的方法是隐式的final。A. public privateB. private protectedC. protected staticD. static private4.继承性使成为可能,它不仅节省开发时间,而且也鼓励人们使用已经验证无误和调试过的高质量软件。A节省时间B软件复用C软件管理D延长软件生命周期5.如果Alpha类继承Beta类,Alpha类被称为类。 A超类B子类C系统D用户自定义6.在上题中,Beta类被称为类。A超类B子类C系统D用户自定义7.四种成员访问形式是。ApublicBprivateCprotectedD包访问8.一个类的对象可以当作相应的类对象看待。A子 系统B用户 系统C子 超D超 用户9.使用多态性减少了逻辑的使用。AforBwhileCifDswitch10.在运行时才确定调用那一个方法,这叫做绑定。A静态B动态C自动D快速第七章 程序设计题1.根据下面的要求编程实现复数类ComplexNumber.(1) 复数类ComplexNumber的属性 m_dRealPart 实部,代表复数的实数部分。 m_dImaginPart 虚部,代表复数的虚数部分。(2) 复数类ComplexNumber的方法 ComplexNumber() 构造函数,将实数、虚数都置为0。 ComplexNumber(double r,double I) 构造函数,创建复数对象的同时完成复数的实部、虚部的初始化;r为实部的初值,i为虚部的初值。 getRealPart() 获得复数对象的实部。 getImaginaryPart() 获得复数对象的虚部。 setRealPart(double d) 把当前复数对象的实部设置为给定的形参的数字。 setImaginaryPart(double d) 把当前复数对象的虚部设置为给定的形参的数字。 complexAdd(ComplexNumber c) 当前复数对象与形参复数的对象相加,所得的结果也是复数值,返回给此方法的调用者。 complexAdd(double c) 当前复数对象与形参实数的对象相加,所得的结果仍是复数值,返回给此方法的调用者。 ComplexMinus(ComplexNumber c) 当前复数对象与形参复数对象相减,所得的结果也是复数值,返回给此方法的调用者。ComplexMinus(double c) 当前复数对象与形参复数对象相减,所得的结果也是复数值,返回给此方法的调用者。ComplexMulti(ComplexNumber c) 当前复数对象与形参复数对象相乘,所得的结果也是复数值,返回给此方法的调用者。ComplexMulti(double c) 当前复数对象与形参复数对象相乘,所得的结果也是复数值,返回给此方法的调用者。toString( ) 把当前复数对象的实部、虚部组合成a+bi的字符串形式,其中a和b分别为实部和虚部的数据。上面的类中使用了面向对象中的那些技术/使用这样的技术有什么好处?。2.编写Applet程序验证、使用上题中的复数类,接受用户输入的复数的实部和虚部,计算复数与复数、复数与实数的加、减、乘、除的操作。3.构造函数是否可以被重载?试举例。第七章判断题答案1.难度:容易答案:错误知识点:Java不支持多重继承。2.难度:容易答案:正确知识点:protected类型的实例变量或方法只能由声明该变量或方法的类本身及其子类访问。3.难度:容易答案:正确知识点:超类的继承性。4.难度:容易答案:正确知识点:超类的概念。5.难度:适中答案:错误知识点:如果没有显式调用超类的构造函数,Java会自动调用超类的缺省构造函数(隐式调用)。6.难度:容易答案:正确知识点:覆盖的概念。7.难度:适中答案:错误知识点:子类不能继承超类的构造函数,然而子类构造函数可以通过super引用调用超类的构造函数。8.难度:容易答案:正确知识点:final类不能被继承,一个final类中的所有方法都是隐式的fianl。9.难度:容易答案:错误知识点: 抽象类不需要实例化对象的类,相反,对象能被实例化的类叫做具体类。10.难度:容易答案:正确知识点:内部类的概念。第七章 选择题答案1.难度:容易答案:B. private知识点:子类不能直接访问它的超类的private成员。2.难度:适中答案:C. protected知识点:finalize方法的调用。3.难度:适中答案:D. static private知识点:final方法的定义永远不能改变,编译器按这种方式优化程序。4.难度:容易答案:B知识点:继承性使软件复用成为可能。5.难度:适中答案:B知识点:子类的概念。6.难度:适中答案:A知识点:超类的概念。7.难度:适中答案:ABCD知识点:四种成员访问形式。8.难度:容易答案:C知识点:子类和超类的概念。9.难度:容易答案:D知识点:使用多态性减少了switch逻辑的使用。10.难度:容易答案:B知识点:动态绑定就是在运行时才确定调用那一个方法。第七章 程序设计题答案1.难度:难答案:ComplexNumber类使用了面向对象的重载技术,实现了类内的抽象复数的运算。源程序 ComplexNumber.javapublic class ComplexNumber 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 + );知识点:面向对象的重载技术。2.难度:难答案:源程序一:Fushu1.javaimport java.applet.*;import java.awt.*;import java.awt.event.*;public class Fushu1 extends Applet implements ActionListenerfinal int NUMBER = 4;ComplexNumber cNumber_1;ComplexNumber cNumber_2;ComplexNumber cResult;double d = 0.0;TextField numComplexTfd,subComplexTfd;Label resComplexLbl;Button caculateBtn;final String COMMAND_NAME = ADD,MINUS,MULTIPLE,DIVIDE;public Fushi1() /初始化numComplexTfd = new TextFieldNUMBER2;subComplexTfd = new TextFieldNUMBER2;resComplexLbl = new LabelNUMBER2;caculateBtn = new ButtonNUMBER;for(int i=0; iNUMBER;I+) for(int j=0; j2; j+)numComplexTfdij = new TextField(5);subComplexTfdij = new TextField(5);resComplexLblij = new Label( );caculateBtni = new Button(=);caculateBtni.addActionListener(this);caculateBtni.setActionCommand(COMMAND_NAMEi);cNumber_1 = new ComplexNumber();cNumber_2 = new ComplexNumber();cResult = new ComplexNumber();/加入各图形界面成分for(int i=0; i/第一个操作数的输入界面成分add(new Label( ();add(numComplexTfdi0);add(new Label(+);add(numComplexTfdi1);add(new Label(i ) );/操作符switch(i)case 0: add(new Label( + );break;case 1: add(new Label( - );break;case 2: add(new Label( * );break;case 3: add(new Label( / );break;/第二个操作数的输入界面成分add(new Label( ();add(subComplexTfdi0);add(new Label(+);add(subComplexTfdi1);add(new Label(i );/启动运算的按钮add(caculateBtni);/运算结果的输出界面成分add(new Label( ();add(resComplexLbli0);add(new Label(+);add(resComplexLbli1);add(new Label(i ) );/for/构造函数public void init()resetTextField();public void actionPerformed(ActionEvent e)int flag = 0;try/确定何种运算if(e.getActionCommand().equals(COMMAND_NAME0)flag = 0;else if(e.getActionCommand().equals(COMMAND_NAME1)flag = 1;else if(e.getActionCommand().equals(COMMAND_NAME2)flag = 2;else if(e.getActionCommand().equals(COMMAND_NAME3)flag = 3;elseshowStatus(未定义这种事件的处理操作 + e.toString();return;/取得第一个操作数的数值cNumber_1.setRealPart( Double.parseDouble(numComplexTfdflag0.getText();cNumber_1.setImaginaryPart( Double.parseDouble(numComplexTfdflag1.getText();/若第二个操作数是实数,则完成相应的计算if(subComplexTfdflag1.getText().equals()d = Double.parseDouble(subComplexTfdflag0.getText();switch(flag)case 0: cResult = cNumber_1.complexAdd(d);break;case 1: cResult = cNumber_1.complexMinus(d);break;case 2: cResult = cNumber_1.complexMulti(d);break;case 3: cResult = cNumber_1.complexDivide(d);break;/若第二个操作数是复数,则完成相应的计算elsecNumber_2.setRealPart( Double.parseDouble(subComplexTfdflag0.getText();cNumber_2.setImaginaryPart( Double.parseDouble(subComplexTfdflag1.getText();switch(flag)case 0: cResult = cNumber_1.complexAdd(cNumber_2);break;case 1: cResult = cNumber_1.complexMinus(cNumber_2);break;case 2: cResult = cNumber_1.complexMulti(cNumber_2);break;case 3: cResult = cNumber_1.complexDivide(cNumber_2);break;/显示运算结果resComplexLblflag0.setText( Double.toString(cResult.getRealPart();resComplexLblflag1.setText( Double.toString(cResult.getImaginaryPart();catch(NumberFormatException nfe)showStatus(数据格式错误,请重新输入。);resetTextField();/将各输入、输出域清空void resetTextField()for(int i=0;iNUMBER;I+)for(int j=0;j2;j+)numComplexTfdij.setText();subComplexTfdij.setText();resComplexLblij.setText( );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 complexConjugate()return new ComplexNumber(m_dRealPart, -1 * m_dImaginPart);/复数运算方法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);ComplexNumber complexDivide(double d)return new ComplexNumber(this.m_dRealPart / d, this.m_dImaginPart /d);ComplexNumber complexDivide(ComplexNumber c)double mod = c.getRealPart()*c.getRealPart() + c.getImaginaryPart()*c.getImaginaryPart();if(mod = 0)return new ComplexNumber(0,0);elsereturn plexMulti( plexConjugate().complexDivide(mod);/toString()public String toString()return ( + m_dRealPart + + + m_dImaginPart + i + );源程序二:Fushu2.javaimport java.applet.*;import java.awt.*;import java.awt.event.*;public class Fushu2 extends Applet implements ActionListenerfinal int NUMBER = 4;ComplexInputPanel inputComplexPnl;ComplexOutputPanel outputComplexPnl;Button caculateBtn;final String COMMAND_NAME = ADD,MINUS,MULTIPLE,DIVIDE;public Fushi2() super();/初始化inputComplexPnl = new ComplexInputPanelNUMBER2;outputComplexPnl = new ComplexOutputPanelNUMBER;caculateBtn = new ButtonNUMBER;for(int i=0;iNUMBER;I+)for(int j=0;j2;j+) inputComplexPnlij = new ComplexInputPanel();outputComplexPnli = new ComplexOutputPanel();caculateBtni = new Button(=);caculateBtni.addActionListener(this);caculateBtni.setActionCommand(COMMAND_NAMEi);/加入各图形界面成分for(int i=0;iNUMBER;I+)/第一个操作数的输入界面成分add(inputComplexPnli0);/操作符switch(i)case 0: add(new Label(+);break;case 1: add(new Label(-);break;case 2: add(new Label(*);break;case 3: add(new Label(/);break;/第二个操作数的输入界面成分add(inputComplexPnli1);/启动运算的按钮add(caculateBtni);/运算结果的输出界面成分add(outputComplexPnli);/forpublic void init() for(int i=0;iNUMBER;I+)for(int j=0;j2;j+)inputComplexPnlij.resetFaces();outputComplexPnli.resetFaces();/initpublic void actionPerformed(ActionEvent e)tryif(e.getActionCommand().equals(COMMAND_NAME0)inputComplexPnl00.getComplexNumber();outputComplexPnl0.setComplexNumber( inputComplexPplexAdd( inputComplexPnl01.getComplexNumber();else if(e.getActionCommand().equals(COMMAND_NAME1)inputComplexPnl10.getComplexNumber();outputComplexPnl1.setComplexNumber( inputComplexPplexMinus( inputComplexPnl11.getComplexNumber();else if(e.getActionCommand().equals(COMMAND_NAME2)inputComplexPnl20.getComplexNumber();outputComplexPnl2.setComplexNumber( inputComplexPplexMulti( inputComplexPnl21.getComplexNumber();else if(e.getActionCommand().equals(COMMAND_NAME3)inputComplexPnl30.getComplexNumber();outputComplexPnl3.setComplexNumber( inputComplexPplexDivide( inputComplexPnl31.getComplexNumber();elseshowStatus(未定义这种事件的处理操作 + e.toString();return;catch(NumberFormatException nfe)showStatus(数据格式错误,请重新输入。);for(int i=0;iNUMBER; i+)for(int j=0;j2;j+)inputComplexPnlij.resetFaces();outputComplexPnli.resetFaces();interface ComplexCaculationsInterfacepublic ComplexNumber complexAdd(ComplexNumber c);public ComplexNumber complexAdd(double d);public ComplexNumber complexMinus(ComplexNumber c);public ComplexNumber complexMinus(double d);public ComplexNumber complexMulti(ComplexNumber c);public ComplexNumber complexMulti(double d);public ComplexNumber complexDivide(double d);public ComplexNumber complexDivide(ComplexNumber c);abstract class ComplexPanel extends Panel implements ComplexCaculationsInterfaceComplexNumber innerComplex;Label prefixLabel,midLabel,suffixLabel;ComplexPanel()super();innerComplex = new ComplexNumber();prefixLabel = new Label();midLabel = new Label(+);suffixLabel = new Label(i);createAddFaces();abstract void createAddFaces();abstract ComplexNumber getComplexNumber() throws NumberFormatException;abstract void setComplexNumber(ComplexNumber c);abstract void resetFaces();public ComplexNumber complexAdd(ComplexNumber c)return innerCplexAdd(c);public ComplexNumber complexAdd(double d)return innerCplexAdd(d);public ComplexNumber complexMinus(ComplexNumber c)return innerCplexMinus(c);public ComplexNumber complexMinus(double d)return innerCplexMinus(d);public ComplexNumber complexMulti(ComplexNumber c)return innerCplexMulti(c);public ComplexNumber complexMulti(double d)return innerCplexMulti(d);public ComplexNumber complexDivide(double d)return innerCplexDivide(d);public ComplexNumber complexDivide(ComplexNumber c)return innerCplexDivide(c);class ComplexInputPanel extends ComplexPanelprivate TextField realTfd,imaginaryTfd;void createAddFaces()realTfd = new TextField(3);imaginaryTfd = new TextField(3);add(prefixLabel);add(realTfd);add(midLabel);add(imaginaryTfd);add(suffixLabel);ComplexNumber getComplexNumber() throws NumberFormatExceptioninnerComplex = new ComplexNumber( Double.parseDouble(realTfd.getText(), Double.parseDouble( (imaginaryTfd.getText().equals() ? 0 : imaginaryTfd.getText() ) );return innerComplex;void setComplexNumber(ComplexNumber c)double r,i;r = c.getRealPart();i = c.getImaginaryPart();innerComplex.setRealPart(r);innerComplex.setImaginaryPart(i);realTfd.setText(Double.toString(r);imaginaryTfd.setText(Double.toString(i);void resetFaces()realTfd.setText();imaginaryTfd.setText();class ComplexOutputPanel extends ComplexPanelprivate Label realLbl,imaginaryLbl;void createAddFaces()realLbl = new Label( );imaginaryLbl = new Label( );add(prefixLabel);add(realLbl);add(midLabel);add(imaginaryLbl);add(suffixLabel);ComplexNumber getComplexNumber() throws NumberFormatExceptioninnerComplex = new ComplexNumber( Double.parseDouble(realLbl.getText(), Double.parseDouble( (imaginaryLbl.getText().equals() ? 0 : imaginaryLbl.getText() ) );return innerComplex;void setComplexNumber(ComplexNumber c)double r,i;r = c.getRealPart();i = c.getImaginaryPart();innerComplex.setRealPart(r);innerComplex.setImaginaryPart(i);realLbl.setText(Double.toString(r);imaginaryLbl.setText(Double.toString(i);void resetFaces()realLbl.setText( );imaginaryLbl.setText( );class ComplexNumber implements ComplexCaculationsInterface/域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 complexConjugate()return new ComplexNumber(m_dRealPart, -1 *

温馨提示

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

评论

0/150

提交评论