1. 不上机,判断下面程序的输出结果
class X {Y b = new Y();X() {System.out.print("X");} } class Y {Y() {System.out.print("Y");} } public class Z extends X {Y y = new Y();Z() {System.out.print("Z");}public static void main(String[] args) {new Z();} }
结果:YXYZ
分析:首先运行主函数,进入Z类。由于Z为X的继承类,所以先访问X类,X中包含一个Y类对象,输出Y后输出X。Z类中也有一个Y类对象,输出Y,最后输出Z类中的Z。
2.什么是数据隐藏?如何证明子类对父类同名方法进行重新定义,只能是方法的覆盖而不是方法的隐藏?
答:(1)数据隐藏就是封装,就是将属性私有化,提供公有的方法去访问私有属性。 为属性创建getter()和setter()方法分别为:读取属性值和为属性赋值。同时在setter()方法里为属性赋值可以做一些数据的处理,增强数据的可维护性。
(2)当定义了子类同名后在子类和父类中均设置输出函数,若是调用父类时可以输出原父类输出函数,则说明是影藏,否则就是被子类覆盖了。
3.A1、A2分别是具体类A的子类,A3为A1的子类,A1、A2之间关系为平行类,下面的代码为连续程序片段,请问哪些正确
A a = new A(); 对
a = new A1(); 对(A1为A的子类)
a = new A2(); 对(A2位A子类 且 A2与A1为平行类)
a = new A3(); 对(A3为A2的子类)
A1 a1 = new A3(); 对(A3为A2的子类 且 A2与A1为平行类)
A3 a3 = a1; 错
A2 a2 = new A1(); 错
a3 = new A2(); 错
4.借助JDK帮助,编写程序实现这样的功能:Applet当中的TextField,每输入任一字符,在一个label当中都能动态跟踪刷新。
import java.applet.Applet; import java.awt.Label; import java.awt.TextField; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; public class F extends Applet implements KeyListener{TextField f=new TextField(10);Label l=new Label(" ");public void init(){f.addKeyListener(this);add(f);add(l);setSize(500,100);}public void keyPressed(KeyEvent arg0) {}public void keyReleased(KeyEvent arg0) {}public void keyTyped(KeyEvent ke) {l.setText(f.getText()+ke.getKeyChar());} }