Java基础面向对象习题

2017-05-19 14:57:00

Java基础面向对象习题
 
1.面向对象的软件开发有哪些优点?
 
使用面向对象思想进行开发有以下优点:
 
1、易维护
 
采用面向对象思想设计的结构,可读性高,由于继承的存在,即使改变需求,那么维护也只是在局部模块,所以维护起来是非常方便和较低成本的。
 
2、质量高
 
在设计时,可重用现有的,在以前的项目的领域中已被测试过的类使系统满足业务需求并具有较高的质量。
 
3、效率高
 
在软件开发时,根据设计的需要对现实世界的事物进行抽象,产生类。使用这样的方法解决问题,接近于日常生活和自然的思考方式,势必提高软件开发的效率和质量。
 
4、易扩展
 
由于继承、封装、多态的特性,自然设计出高内聚、低耦合的系统结构,使得系统更灵活、更容易扩展,而且成本较低。
 
面向对象的软件开发具有以下优点:
 
?
 
?
 
? 把软件系统看成是各种对象的集合,这更接近人类的自然思维方式。 软件需求的变动往往是功能的变动,而功能的执行者——对象一般不会有大的变 化。这使得按照对象设计出来的系统结构比较稳定。 对象包括属性(数据)和行为(方法),对象把数据以及方法的具体实现方式一起封装起
 
来,这使得方法和与之相关的数据不再分离,提高了每个子系统的相对独立性,从而提高了软件的可维护性。
 
? 支持封装、抽象、继承和多态,提高了软件的可重用性、可维护性和可扩展性
 
开发软件系统的目的,就是为了让它提供特定服务。从使用者的角度出发,整个软件系统就是一个服务提供者。大的系统由多个子系统组合而成。在系统内部,每个子系统(对象或对象的组合)也都是服务提供者,它们为其它子系统或者所属的大系统提供服务,各个系统之间通过发送消息来互相获得服务。因此,一个孤立的不对外提供任何服务的系统是没有任何意义的
 
3.列举一些现实生活中的例子,来说明什么是依赖关系、什么是聚和关系,以及什么 是关联关系。
 
依赖关系:人依赖食物;电视机依赖电;理发师依赖剪刀和吹风机;鱼依赖水 聚集关系:电脑由显示器、主机和键盘等聚集而成;
 
关联关系:公司和员工;银行和客户;老公和老婆
 
4.列举一些现实生活中的例子,来说明什么是封装,什么是接口。
 
封装:电脑主机的组件被封装在机箱内;电视机的内部构件也被封装在大壳子内
 
接口:电脑的键盘上的按键是电脑向人提供的接口;电脑上的USB插口是向移动硬盘提供的接口;电脑上的光盘驱动器是向光盘提供的接口。
 
5.抽象的最主要的特征是什么?
 
抽象是指从特定角度出发,从已经存在的一些事物中抽取我们所关注的特性,形成一个新的事物的思维过程。抽象是一种由具体到抽象、由复杂到简洁的思维方式。
 
6.在建立对象模型时,要经历哪些抽象思维过程?
 
(1)从问题领域的事物到软件模型中对象的抽象
 
(2)从对象到类的抽象
 
(3)从子类到父类的抽象
 
7.类就是程序员自定义的类型,这句话对吗?
 
对的。
 
对象模型中的类可看作是开发人员自定义的数据类型,Java虚拟机的运行时环境封装了把自定义的数据类型映射到计算机的内置数据类型的过程,使得开发人员不必受到计算机的内置数据类型的限制,对任意一种问题领域,都可以方便的根据识别对象、再进行分类(创建任意的数据类型)的思路来建立对象模型。
 
8.小王本来体重 70Kg,经过减肥,体重降到 45Kg,试从这个问题领域中识别对象、 类、属性、行为、状态,和状态变化。
 
对象:小王
 
类:人
 
属性:体重 行为:减肥
 
状态:减肥前状态:小王体重70Kg;
 
减肥后状态:小王体重45Kg
 
状态变化:减肥行为使得小王的体重发生了变化
 
9.画出UML框图中的继承(泛化)、实现和依赖的连接线。
 
状态转换图、时序图和协作图则构成了系统的动态结构;用例图、类框图、组件图和部署图等四个图形,构成了系统的静态结构;
 
Java基础面向对象习题2:
 
1.继承有哪些优点和缺点?
 
2.继承与组合有哪些异同?
 
3.方法覆盖必须满足哪些规则?
 
4.以下哪些代码能够编译通过?
 
a) class Fruit { }
 
public class Orange extends Fruit {
 
public static void main(String[] args){
 
Fruit f=new Fruit();
 
Orange o=f;
 
}
 
}
 
b) class Fruit {}
 
public class Orange extends Fruit {
 
public static void main(String[] args){
 
Orange o=new Orange();
 
Fruit f=o;
 
}
 
}
 
c) interface Fruit {}
 
public class Apple implements Fruit {
 
public static void main(String[] args){
 
Fruit f=new Fruit();
 
Apple a=f;
 
}
 
}
 
d) interface Fruit {}
 
public class Apple implements Fruit {
 
public static void main(String[] args){
 
Apple a=new Apple();
 
Fruit f=a;
 
}
 
}
 
e) interface Fruit {}
 
class Apple implements Fruit {}
 
class Orange implements Fruit {}
 
public class MyFruit {
 
public static void main(String[] args){
 
Orange o=new Orange();
 
Fruit f=o;
 
Apple a=f;
 
}
 
}
 
5.对于以下类:
 
interface IFace{}
 
class CFace implements IFace{}
 
class Base{} public class ObRef extends Base{
 
public static void main(String argv[]){
 
ObRef ob = new ObRef();
 
Base b = new Base();
 
Object o1 = new Object();
 
IFace o2 = new CFace();
 
}
 
}
 
下面哪些代码能够编译通过?
 
a) o1=o2;
 
b) b=ob;
 
c) ob=b;
 
d) o1=b;
 
6.对于以下类:
 
class A {}
 
class B extends A {}
 
class C extends A {}
 
public class Q3ae4 {
 
public static void main(String args[]) {
 
A x = new A();
 
B y = new B();
 
C z = new C();
 
// 此处插入一条语句
 
}
 
}
 
下面哪些语句放到以上插入行,将导致运行时异常?
 
a) x = y;
 
b) z = x;
 
c) y = (B) x;
 
d) z = (C) y;
 
e) y = (A) y;
 
7.下面哪些是合法的语句?
 
a) Object o = new String(
 
b) Boolean b = true;
 
c) Panel p = new Frame();
 
d) Applet a = new Panel();
 
e) Panel p = new Applet();
 
8.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果? Object o = new String(
 
String s = o;
 
System.out.println(s);
 
System.out.println(o);
 
9.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?
 
class Base{
 
abstract public void myfunc();
 
public void another(){
 
System.out.println(
 
}
 
}
 
public class Abs extends Base{
 
public static void main(String argv[]){
 
Abs a = new Abs();
 
a.amethod();
 
}
 
public void myfunc(){
 
System.out.println(
 
}
 
public void amethod(){
 
myfunc();
 
}
 
}
 
10.以下哪些代码是合法的?
 
a) public abstract method();
 
b) public abstract void method();
 
c) public abstract void method(){}
 
d) public virtual void method();
 
e) public void method() implements abstract;
 
11.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?
 
abstract class Base{
 
abstract public void myfunc();
 
public void another(){
 
System.out.println(
 
}
 
}
 
public class Abs extends Base{
 
public static void main(String argv[]){
 
Abs a = new Abs();
 
a.amethod();
 
} public void myfunc(){
 
System.out.println(
 
}
 
public void amethod(){
 
myfunc();
 
}
 
}
 
12.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?
 
import java.io.FileNotFoundException;
 
class Base{
 
public static void amethod()throws FileNotFoundException{}
 
}
 
public class ExcepDemo extends Base{
 
public static void main(String argv[]){
 
ExcepDemo e = new ExcepDemo();
 
}
 
public static void amethod(){}
 
protected ExcepDemo(){
 
System.out.println(
 
amethod();
 
System.out.println(
 
}
 
}
 
13.对于以下代码:
 
public class Tester {
 
public long sum(long a, long b) { return a + b; }
 
// 此处插入一行
 
}
 
下面哪些语句放到以上插入行,可以编译通过?
 
a) public int sum(int a, int b) { return a + b; }
 
b) public int sum(long a, long b) { return 0; }
 
c) abstract int sum();
 
d) private long sum(long a, long b) { return a + b; }
 
e) public long sum(long a, int b) { return a + b; }
 
Java基础面向对象习题3:
 
1.以下哪些是 Java 修饰符?
 
a) public
 
b) private
 
c) friendly d) transient
 
e) vagrant
 
2.作为程序入口的 main()方法可以用哪些修饰符来修饰?
 
a) private
 
b) final
 
c) static
 
d) int
 
e) abstract
 
3.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?
 
private class Base{}
 
public class Vis{
 
transient int iVal;
 
public static void main(String elephant[]){ }
 
}
 
4.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?
 
class A{
 
private int secret;
 
}
 
public class Test{
 
public int method(A a){
 
return a.secret++;
 
}
 
public static void main(String args[]){
 
Test test=new Test();
 
A a=new A();
 
System.out.println(test.method(a));
 
}
 
}
 
5.哪个访问控制符的访问级别最大?
 
a) private
 
b) public
 
c) protected
 
d) 默认
 
6. 如果一个方法只能被当前类以及同一个包中的类访问, 这个方法采用什么访问级别?
 
7.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?
 
private class Base{
 
Base(){
 
int i = 100;
 
System.out.println(i);
 
}
 
}
 
public class Pri extends Base{
 
static int i = 200;
 
public static void main(String argv[]){
 
Pri p = new Pri();
 
System.out.println(i);
 
}
 
}
 
8.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?
 
public class MyAr{
 
public static void main(String argv[]) {
 
MyAr m = new MyAr();
 
m.amethod();
 
}
 
public void amethod(){
 
static int i;
 
System.out.println(i);
 
}
 
}
 
9.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?
 
class Test{
 
int x = 5;
 
static String s =
 
public static void method(){
 
System.out.println(s + x);
 
}
 
}
 
10.对于以下程序,运行“java StaticTest” ,得到什么打印结果? public class StaticTest {
 
static {
 
System.out.println(
 
}
 
public void print() {
 
System.out.println(
 
public static void main(String args []) {
 
StaticTest st1 = new StaticTest();
 
st1.print();
 
StaticTest st2 = new StaticTest();
 
st2.print();
 
}
 
}
 
11.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果? public class Test{
 
final int x = 0;
 
Test(){
 
x = 1;
 
}
 
final int aMethod(){
 
return x;
 
}
 
}
 
12.以下代码能否编译通过?
 
public class FinalTest{
 
final int q;
 
final int w = 0;
 
FinalTest(){
 
q = 1;
 
}
 
FinalTest(int x){
 
q = x;
 
}
 
}
 
13.以下代码能否编译通过?
 
public class FinalTest{
 
final int q;
 
final int w = 0;
 
FinalTest(){ this(0);
 
q = 1; }
 
FinalTest(int x){ q = x; }
 
}
 
Java基础面向对象习题4:
 
1.接口与抽象类有哪些异同点?
 
2.区分接口与抽象类分别在什么场合使用?
 
3.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果? import java.awt.event.*;
 
import java.awt.*;
 
public class MyWc extends Frame implements WindowListener{ public static void main(String argv[]){
 
MyWc mwc = new MyWc();
 
}
 
public void windowClosing(WindowEvent we){
 
System.exit(0);
 
}//End of windowClosing
 
public void MyWc(){
 
setSize(300,300);
 
setVisible(true); }
 
}
 
4.以下代码能否编译通过?
 
interface A{
 
int x = 0;
 
A(){
 
x= 5;
 
}
 
A(int s){
 
x = s;
 
}
 
}
 
5.接口中的方法可以使用哪些修饰符?
 
a) static
 
b) private
 
c) synchronised
 
d) protected
 
e) public
 
6.以下是接口 I的定义:
 
interface I {
 
void setValue(int val);
 
int getValue();
 
}
 
以下哪些代码能编译通过?
 
(a) class A extends I {
 
int value;
 
void setValue(int val) { value = val; } int getValue() { return value; }
 
}
 
b) interface B extends I {
 
void increment();
 
}
 
c) abstract class C implements I {
 
int getValue() { return 0; }
 
abstract void increment();
 
}
 
d) interface D implements I {
 
void increment();
 
}
 
(e) class E implements I {
 
int value;
 
public void setValue(int val) { value = val; } }
 
7.以下代码能否编译通过?
 
interface A{
 
int x;
 
void A(int s){
 
x = s;
 
}
 
}

iOS QQ群

HTML5 QQ群

飞雀动态

行业新闻

Copyright © 2015-2016 Future education technology co., LTD All Rights Reserved