例: class A {
int x;
static int y; }
class B {
public void func(); {
A.x=10; //非法 A.y=20; //合法 } }
7. 子类将继承父类的哪些成员变量和方法?子类在什么情况下隐藏父类的成员变量和方法?在子类中是否允许有一个方法和父类的方法名字相同,而类型不同?
答:①子类和父类在同一个包中时,子类可以继承父类的除private属性的所有方法和成员变量,当子类与
父类不在同一个包中时,子类只能继承父类的protected和public属性的成员变量和方法。
②子类中定义的成员变量和父类中的成员变量同名时,子类就隐藏了继承的成员变量;子类中定义一个方法,并且这个方法的名字、返回类型、参数个数和类型与从父类继承的方法完全相同,子类就隐藏从父类继承来的方法(方法的重写)。 ③在子类中允许有一个方法和父类的方法名字相同而类型不同。 8. 父类的final方法可以被子类重写吗? 答: 父类的final方法不能被子类重写。 9. 什么类中可以有abstract方法?
答: abstract类中可以有abstract方法。 10.什么叫对象的上转型对象? 答: B类是A类的子类或间接子类,当用子类B创建一个对象b并把这个对象的引用放到A类的对象a中时,称A类对象a是子类对象b的上转型对象。 11.什么叫接口的回调?
答: 可以把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量中。 12.下列程序有什么错误? public class Takecare {
int a=90;
static float b=10.98f;
public static void main(String args[]) {
float c=a+b;
System.out.println(\}
9
}
答: 语句float c=a+b;错误。原因是类方法main操作了实例变量a。 13. 请写出下列程序的输出结果。 class A {
public int f(int x) {
return x+1; } }
class B extends A {
public int f(int x) {
return x*x; } }
public class E {
public static void main(String args[]) {
A a=new B(); int m=a.f(10);
System.out.println(m); } }
答: 100
14. 请写出下列程序的输出结果。 class A {
int x;
public void setX(int x) {
this.x=x; }
int getX() {
return x; } }
class B {
public void f(A a)
10
{
a.setX(100); } }
public class E {
public static void main(String args[]) {
A a=new A(); a.setX(8);
System.out.println(a.getX()); B b=new B(); b.f(a);
System.out.println(a.getX()); } }
答: 8 100
15.使用接口有哪些注意事项?模仿例子4.27,编写一个类实现两个接口的程序。
答:①一个类使用接口时,要有implements关键字,当一个类使用多个接口时,接口名要用逗号“,”隔开;使用接口的类除abstract类外,必须实现接口的所有方法,并且实现接口的方法时,方法名字、返回类型、参数个数及类型必须与接口中的完全一致;类在实现接口时,方法体一定要用public修饰,如果接口方法的返回类型不是void型,在类中实现接口时,方法体至少有一个return语句。 ② interface 表面积 {
double allArea(double r); }
interface 体积 {
double volu(double r); }
class Sph implements 表面积,体积 {
double PI=3.14159;
public double allArea(double r) {
return 4*PI*r*r; }
public double volu(double r) {
return 4.0/3*PI*r*r*r;
11
} }
public class Test {
public static void main(String args[]) {
double r=5.0; Sph a=new Sph();
System.out.println(\半径为5的球的表面积是:\System.out.println(\半径为5的球的体积是:\} }
16.编写一个类A,该类创建的对象可以调用方法f输出英文字母表,然后再编写一个该类的子类B,要求子类B必须继承A类的方法f(不允许重写),子类创建的对象不仅可以调用方法f输出英文字母表,而且调用子类新增的方法g输出希腊字母表。 答: class A {
int m; void f() {
for(m=65;m<91;m++)
System.out.print((char)m+\for(m=97;m<123;m++)
System.out.print((char)m+\System.out.println(\} }
class B extends A {
int i; void g() {
for(i=913;i<930;i++)
System.out.print((char)i+\for(i=931;i<938;i++)
System.out.print((char)i+\for(i=945;i<962;i++)
System.out.print((char)i+\for(i=963;i<970;i++)
System.out.print((char)i+\
System.out.println(\}
12
相关推荐: