第4章 Java语言面向对象高级程序设计
(2010-11-15 13:03:27)
标签:
杂谈 |
习
1.在面向对象系统中,消息分为(公有消息)和(私有消息)两类。
2.类的访问控制符有(public)和(默认default)两种,(public)类具有跨包访问性而(default)类不能被跨包访问。
3.类成员的访问控制符有(public)、(protected)、(private)和默认四种。
4.public类型的类成员可被(同一类)、同一包中的(子类与非子类)和不同包中的
5.protected类型的类成员可被(同一类)、同一包中的(子类与非子类)和不同包中的(子类)的代码访问引用。
6.default类型的类成员只能被(同一类)、同一包中的(子类与非子类)的代码访问引用。
7.private类型的类成员只能被其所在类中的代码访问引用,它只具有(类)域访问性。
8.系统规定用(this())表示当前类的构造方法,用(super())表示直接父类的构造方法,在构造方法中两者只能选其一,且须放在第一条语句。
9.若子类和父类在同一个包中,则子类继承父类中的(public)、(protected)和(默认)成员,将其作为子类的成员,但不能继承父类的(private)成员。
10.若子类和父类不在同一个包中,则子类继承了父类中的(public)和(protected)成员,将其作为子类的成员,但不能继承父类的(默认)和(private)成员。
11.(子类对象)直接赋值给(父类对象)时,子类对象可自动转换为父类对象,(父类对象)赋值给(子类对象)时,必须将父类对象强制转换为子类对象。
12.Java的多态性主要表现在(方法重载)、(方法覆盖)和(变量覆盖)三个方面。
13.重写后的方法不能比被重写的方法有(更严格)的访问权限,重写后的方法不能比被重写的方法产生更多的异常。
14.Java语言中,定义子类时,使用关键字(extends)来给出父类名。如果没有指出父类,则该类的默认父类为(Object类)。
15.Java语言中,重载方法的选择是在编译时进行的,系统根据(参数个数)、(参数类型)和参数顺序寻找匹配方法。
16.实现接口中的抽象方法时,必须使用(完全相同)的方法头,并且还要用(public)修饰符。
17.接口中定义的数据成员均是(常量数据成员),所有成员方法均为(抽象方法)方法,且没有(构造)方法。
18.this代表(当前对象自身)的引用,super表示的是当前对象的直接父类对象。
19.如果一个类包含一个或多个abstract方法,则它是一个(abstract)类。
20.Java不直接支持多继承,但可以通过(接口)实现多继承。类的继承具有(传递)性。
21.没有子类的类称为(最终类),不能被子类重载的方法称为(最终方法),不能改变值的量称为常量,又称为(最终变量)。
22.一个接口可以通过关键字extends来继承(多个)其他接口。
23.接口中只能包含(public
24.一般地,内部类又分为定义在方法体外的(成员类)和定义在方法体内的(局部类)两种。
25.静态内部类可直接通过外部类名引用,其一般格式是(new
26.匿名类一般分为(语句匿名类)和(参数匿名)类两种。
27.面向对象的软件设计中,根据目的不同模式可分为(创建型)、(结构型)和(行为型)三种。
1.什么是继承?什么是父类?什么是子类?继承的特性可给面向对象编程带来什么好处?什么是单继承?什么是多重继承?
2.如何创建一个类的子类?
3.若在一个public类中的成员变量及成员方法的访问控制符为protected,则此类中的成员可供什么样的包引用?
4.什么是多态?使用多态有什么优点?Java中的多态有哪几种?重载方法与覆盖方法分别属于哪种多态?
5.什么是重载方法?什么是覆盖方法?它们的主要区别是什么?
6.什么是成员变量的继承?什么是成员变量的覆盖?
7.举例说明什么是上转型对象,上转型对象的操作原则是什么?
8.简述接口定义的一般格式。
9.什么是接口?如何定义接口?接口与类有何区别?
10.一个类如何实现接口?实现某接口的类是否一定要重载该接口中的所有抽象方法?
11.比较接口与抽象类的异同。
12.什么是抽象类?什么是抽象方法?各自有什么特点?
13.什么是最终类?什么是最终变量?什么是最终方法?
14.简述内部类的类型。
15.简述在外部类的内部与外部对实例成员类实例化的方法。
16.简述定义语句匿名类和参数匿名的一般格式。
17.什么是适配器模式?什么是装饰模式?
1.下面关于类的继承性的描述中,错误的是(
A.继承是在已有的基础上生成新类的一种方法
B.Java语言要求一个子类只有一个父类
C.父类中成员的访问权限在子类中将被改变
D.子类继承父类的所有成员,但不包括私有的成员方法
2.在成员方法的访问控制修饰符中,规定访问权限包含该类自身,同包的其他类和其他包的该类子类的修饰符是(
A.默认
3.在类的修饰符中,规定只能被同一包类所使用的修饰符是(
A.public
4.下列关于子类继承父类的成员描述中,错误的是(
A.当子类中出现成员方法头与父类方法头相同的方法时,子类成员方法覆盖父类中的成员方法。
B.方法重载是编译时处理的,而方法覆盖是在运行时处理的。
C.子类中继承父类中的所有成员都可以访问。
D.子类中定义有与父类同名变量时,在子类继承父类的操作中,使用继承父类的变量;子类执行自己的操作中,使用自己定义的变量。
5.定义一个类名为“MyClass.java”的类,并且该类可被一个工程中的所有类访问,则下面哪些声明是正确的?(
A.public
C.private
6.下列关于继承性的描述中,错误的是(
A.一个类可以同时生成多个子类 B.子类继承了父类中除私有的成员以外的其他成员
C.Java支持单重继承和多重继承 D.Java通过接口可使子类使用多个父类的成员
7.下列关于抽象类的描述中,错误的是(
A.抽象类是用修饰符abstract说明的
C.抽象类是不可以有构造方法的
8.设有如下类的定义:
public
int
}
class
则,下面哪些方法可加入Child类中?(
A.public
C.private
9.下列关于构造方法的叙述中,错误的是(
A.构造方法名与类名必须相同
C.构造方法只能通过new自动调用
10.下面叙述中,错误的是(
A.子类继承父类
11.下列对多态性的描述中,错误的是(
A.Java语言允许方法重载与方法覆盖
C.Java语言允许变量覆盖
12.下面关于接口的描述中,错误的是(
A.一个类只允许继承一个接口
C.在继承接口的类中通常要给出接口中定义的抽象方法的具体实现
D.接口实际上是由常量和抽象方法构成的特殊类
13.欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的?(
A.ArrayList
C.List
14.下列哪些方法与方法public
A.public
C.public
15.MAX_LENGTH是int型public成员变量,变量值保持为常量100,其定义是(
A.public
C.public
1.Java语言中,构造方法是不可以继承的。(
2.子类的成员变量和成员方法的数目一定大于等于父类的成员变量和成员方法的数目。(
3.抽象方法是一种只有说明而无具体实现的方法。(
4.Java语言中,所创建的子类都应有一个父类。(
5.调用this
6.一个类可以实现多个接口,接口可以实现“多重继承”。
7.实现接口的类不能是抽象类。(
8.使用构造方法只能给实例成员变量赋初值。(
9.Java
1.分析下面的程序,写出运行结果。
public
public
Exercises6_1
}
public
super(s);
System.out.println("How
}
public
this("I
}
}
class
public
System.out.println("What
}
public
this();
System.out.println("I
}
}
运行结果是:(
What
I
How
2.分析下面的程序,写出运行结果。
public
private
private
public
private
private
public
count++;
this.count++;
Exercises6_2.count++;
Exercises6_2.this.count++;
System.out.println(count
+
}
}
public
return
}
public
Exercises6_2
g3.count
Exercises6_2.Student
s1.Output(5);
}
}
运行结果是:(
6
3.分析下面的程序,写出运行结果。
class
class
private
private
public
Dog(String
name
age
step
}
public
fast.step++;
}
}
public
Exercises6_3
Dog
d.step
d.run(d);
System.out.println("
}
}
运行结果是:(
30
4.分析下面的程序,写出运行结果。
class
public
void
public
}
运行结果是:(
Aclass
Bclass
1.找出下面代码的错误部分,说明错误类型及原因,并更正之。
public
}
错误:因为含有抽象方法的类,必须是抽象类;静态方法只能访问静态成员。
更正:
public
private
public
private
abstract
public
return
}
public
carName
}
public
mileage
}
}
2.下列代码不能编译的原因是:(
class
private
public
class
}
}
因为在A类的main方法中,还没有A的实例就要试图生成内部类的实例。
更正如下:
public
private
public
A
a.new
}
class
B()
System.out.println(x);
}
}
}
1.先在一个包中编写第一个类ClassA,要求该类中具有四种不同访问权限的成员,再在另一个包中编写第二个类ClassB,并在该类中编写一个方法以访问第一个类中的成员。总结类成员访问控制的基本规则。
2.设计一个汽车类Car,实现构造方法的重载,然后利用这些构造方法,实例化不同的对象,输出相应的信息。
3.设计一个乘法类Multiplication,在其中定义三个同名的mul方法:第一个方法是计算两个整数的积;第二个方法是计算两个浮点数的积;第三个方法是计算三个浮点数的积。然后以Java
4.已知编一个抽象类AbstractShape如下所示:
abstract
final
public
}
请编写AbstractShape类的一个子类,使该子类实现计算圆面积方法getArea()和周长的方法getGirth()。
5.按下列要求编程:
(1)编写一个抽象类,至少有一个常量和一个抽象方法。
(2)编写二个抽象类的子类,重写定义抽象类中的抽象方法。
(3)编写一个主类使用3个类,进行某种运算。
6.设计一个形状Shapes接口,在其中定义计算面积的getArea(
7.使用继承和接口技术,编写一个程序,求解几何图形(如直线、三角形、矩形、圆和多边形)的周长和面积。
8.使用继承和接口技术,编写一个程序,求解一元多次方程(如一元一次、一元二次和一元高次方程)的解。
9.使用内部类技术构造一个线性链表。
10.参照例4-30以组合方式创建某类的适配器。

加载中…