习题3
3.1 类包括哪些部分?类体包括哪些部分?方法定义包括哪些部分?方法声明包括哪些部分?
答:类包括类声明和类体两部分。 类体包括变量定义和方法定义两部分。 方法定义包括方法声明和方法体两部分。 方法声明包括方法名和返回类型两部分。 3.2 已知类xt32为:
public class xt32 { }
int a1=10; float a2=100; void pnt() { }
System.out.println(a1); System.out.println(a2);
试创建主类A,在类A中访问类xt32的变量a1、a2和方法pnt()。写出程序代码以及编译和运行命令。
答:主类A和程序全部代码如下:
xt32.java public class xt32 { } class A {
public static void main(String args[ ]) {
xt32 abc=new xt32();
System.out.println(\System.out.println(\abc.pnt(); int a1=10; float a2=100; void pnt() { }
System.out.println(a1); System.out.println(a2);
}
}
文件名;
xt32.java
编译命令:
javac xt32.java
运行命令:
java A
3.3 编写一个程序,在main方法中调用本类的abc方法,并显示结果。方法abc的功能是将100和200两个浮点数相加。
答:以下程序xt33.java可满足上述要求。
public class xt33 { }
public static float abc(float a, float b) { }
public static void main (String args[ ]) { }
float xyz=abc(100,200); System.out.println(xyz); float ab=a+b; return ab;
3.4 已知类xt34为:
public class xt34 { }
static int a1=10; static float a2=100;
private static double a3=1000; static void pnt() { }
System.out.println(a3);
试创建主类A作为类xt34的子类,要求在类A中显示a1+a2和a3的值。如果a3是私有的,能在类A中访问它吗?类xt34中修饰各成员的关键字static能不能删除?
答:主类A及整个程序如下:
xt34.java
public class xt34 { 1 }
class A extends xt34 { 2 3 }
public static void main(String args[ ]) {
System.out.println(\pnt(); static int a1=10; static float a2=100;
private static double a3=1000; static void pnt() { }
System.out.println(a3);
}
变量a3是私有的,不能在A中直接访问,但是可以通过访问非私有方法pnt()显示它的值。由于语句2、3是在static环境中访问变量a1、a2和方法pnt,所以这些变量和方法都要修饰为static。又由于方法pnt被修饰为static,所以语句1也是在static环境中访问,a3也应修饰为static。
3.5 类xt35和上一题中的类xt34基本相同,不同之处是删除了成员变量a1、a2、a3和方法pnt的static修饰。类xt35为:
public class xt35 { }
int a1=10; float a2=100;
private double a3=1000; void pnt() { }
System.out.println(a3);
试创建主类A,仍然要求在类A中显示a1+a2和变量a3的值,并写出程序的全部代码以及编译、运行命令。
提示:先创建一个类xt35的子类B,B应是非静态的。再创建主类A,在类A中创建类B的一个对象abc,便可通过abc访问类xt35的非静态变量和方法。
答:按照提示程序xt35.java的代码如下:
public class xt35 { }
class B extends xt35 { } class A {
public static void main(String args[ ]) { }
B abc =new B(); abc.pnt();
System.out.println(\ }
int a1=10; float a2=100;
private double a3=1000; void pnt() { }
System.out.println(a3);
编译命令:
javac xt35.java
运行命令:
java A
3.6 如将上题中的类xt35改成以下接口xt36:
interface xt36 { }
int a1=10; float a2=100; double a3=1000; void pnt();
和上题一样,要求在主类中显示a1+a2和变量a3的值。 答:和上题一样,创建主类A和类B,在B实现接口xt36。由于接口只能声明方法pnt(),不允许给出方法体,方法体要在实现接口的类B给出。由于接口的各成员都默认为public,所以类B中的 pnt()方法必须声明为public。整个程序xt36.java的代码如下:

