实验三 继承、多态和图形用户界面
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三字符串与文本
(上课被教师验收的同学不用提交实验结果,并注意在教师处签名。未完成的同学请提交实验结果,即将程序直接粘贴至本DOC文件,并在邮件名的标题中注明:学号+姓名+实验三)
1.给出下面程序的输出:
2.直接给出下面程序的运行结果:
“B’s constructor is invoked”
“A’s constructor is invoked”
2. 下面的说法对的注明“True”,错的注明“False”
(1)子类是父类的一个子集。(f)(2)当从子类调用一个构造函数时,它的父类的无参构造方法总是被调用。(f)(3)可以覆盖定义在父类中的私有方法。( f) (4)可以覆盖定义在父类中的静态方法。( f)
(5) 如果子类中的一个方法和它的父类中的方法具有完全相同的方法头,但返回值
类型不同,也可以构成覆盖。( f)
(6) 可以给面板添加一个框架。( f)
(7) 可以给框架添加一个面板。( t )
3. 指出下面程序中的问题:
有四处错误
给radius和length赋值要用this.
调用父类的构造方法Circle()和getArea()前需要加上关键字super
4.下面的程序是要在框架中显示一个按钮,但是什么也没有显示出来。这个程序有什么问
题?
Test()中没有创建实例对象
将new javax.swing.JFrame() 改成new Test()
5.填空:
(1)在类上使用default修饰符,才能使同一个包中的类可以访问它,而不同包中的类不能访问它。
(2)在类上使用protected 修饰符,才能使不同包中的类不能访问这个类,而任何包中的子类可以访问它。
6. 在程序清单11-9中,MyStack是用组合实现的,现请扩展ArrayList,利用继承来实现MyStack。编写一个测试程序,提示用户输入五个字符串,然后以逆序显示这些字符串。
package Test03;
public class MyStack extends java.util.ArrayList {
public Object peek() {
return this.get(size() - 1);
}
public Object pop() {
Object o = this.get(size() - 1);
this.remove(size() - 1);
return o;
}
public void push(Object o) {
this.add(o);
}
public static void main(String[] args) {
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.println("请输入5个字符串: ");
String[] o = new String[5];
MyStack mystack = new MyStack();
for(int i = 0; i < 5; i++) {
o[i] = input.next();
mystack.push(o[i]);
}
System.out.println("逆序输出为: ");
while(mystack.peek() != null)
System.out.print(mystack.pop() + " ");
}
}
7.编写程序,创建一个ArrayList,然后向这个线性表中添加一个Object对象、一个Date
对象、一个字符串、一个JFrame对象,然后使用循环调用对象的toString( )方法,来显示线性表中所有的元素。
package Test03;
import javax.swing.JFrame;
import java.util.ArrayList;
import java.util.Date;
public class Test {
public static void main(String[] args) {
ArrayList mylist = new ArrayList();
Object object = new Object();
Date date = new Date();
String s = "mylist";
JFrame frame = new JFrame();
mylist.add(object);
mylist.add(s);
mylist.add(date);
mylist.add(frame);
for(int i = 0; i < mylist.size(); i++) { System.out.println(mylist.get(i));
}
}
}
8. 编写程序,显示如下计算器的界面。
package Test03;
import java.awt.*;
import javax.swing.*;
public class Calculator extends JFrame { public Calculator() {
JPanel p1 = new JPanel();
p1.setLayout(new GridLayout(5,3));
for(int i = 1; i <= 9; i++) {
p1.add(new JButton("" + i));
}
p1.add(new JButton("" + 0));