2025年《java面向对象编程》 java面向对象程序设计题(五篇)
文件格式:DOCX
时间:2023-03-21 00:00:00    小编:海上边缘人

2025年《java面向对象编程》 java面向对象程序设计题(五篇)

小编:海上边缘人

在日常学习、工作或生活中,大家总少不了接触作文或者范文吧,通过文章可以把我们那些零零散散的思想,聚集在一块。范文怎么写才能发挥它最大的作用呢?接下来小编就给大家介绍一下优秀的范文该怎么写,我们一起来看一看吧。

《java面向对象编程》 java面向对象程序设计题篇一

oop 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。

面向对象有三大特性,分别是:封装、继承、多态。封装是隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员。任何类都可以从另外一个类继承,即这个类拥有它所继承类的所有成员。被继承的类称为父类或基类。c# 只支持单继承,不支持多重继承,即在c# 中一次只允许继承一个类,不能同时继承多个类。在c# 中,接口允许多继承,可以通过继承多个接口来实现类似于c++中的多重继承。

多态是同一个类在不同场合下表现出不同的行为特征。

使用抽象方法与虚方法都可以实现多态性。抽象方法是一个未实现的方法,使用abstract关键字修饰,含有抽象方法的类必然是抽象类。抽象方法要在其子方法中通过override关键字重写。

简单工厂模式用于在调用者不知道对象属于哪个自雷的情况下,创建不同的对象。

《java面向对象编程》 java面向对象程序设计题篇二

第一章

面向对象开发方法概述

1.面向对象的软件开发有哪些优点?

1)

把软件系统看成是各种对象的集合,这更接近人类的自然思维方式。

2)

软件需求的变动性往往是功能的变动,而功能的执行者——对象,一般不会有多大的变化,比结构化更稳定。

3)

对象包括属性和行为,对象把数据及方法的具体实现方式一起封装起来,使得方法与之相关的数据不再分析,提高了每个子系统的相对对立性,从而提高软件的可维护性。

4)

支持封装,抽象,继承和多态。提高了软件的可重用性,可维护性和可扩展性。

2.在软件系统中,为什么说一个孤立的不对外提供任何服务的对象是没有意义的?

1)

每个对象都具有特定的功能,相对于其他对象而言,它的功能就是为其他对象提供的服务。

2)

从使用者角度出发,整个软件系统就是一个服务的提供者。

3)

在系统内部,每个子系统也都是服务的提供者,它们其他子系统提供服务。

4)

因此说一个孤立的部队为提供任何服务的系统是美欧任何意义的。

3.列举一些现实生活中的例子,来说明什么是依赖关系、什么是聚集关系,以及什么是关联关系。

1)

关联关系:关联是指类之间的特定对应关系,可以分为单向关联和双向关联,也可以分为一对一关联、一对多关联以及多对多关联。a关联b,是指class a与class b之间存在特定的对应关系。举例如学生和老师,订单和客户。

2)

依赖关系:类之间的调用关系。a依赖b,class a访问class b提供的服务。如panel与shape的关系。

3)

聚集关系:是整体与部分之间的关系

4.列举一些显示生活中的例子,来说明什么是封装,什么是接口。

1)

接口:对象中所有向使用者公开的方法的声明构成了对象的接口。

2)

封装:隐藏对象的属性和实现细节,仅仅对外公开接口。

3)

接口的优点:a.提高系统之间松散耦合b.提高了系统的可扩展性。

4)

封装的有点:

a.便于使用者正确、方便地理解和使用系统,防止使用者错误修改系统的属性。

b.有助于建立各个系统之间的松耦合关系,提高系统的独立性。

c.提高软件的可重用性,没个系统都是一个相对独立的整体,可以在多种环境中得到重用。

d.降低构建大型系统的风险,即使整个系统不成功,个别的独立子系统有可能依然有价值。

5.抽象的最主要特征是什么?

抽象是指从特定角度出发,从已经存在的一些事物中抽取我们所关注的特性,形成一个新的事物的思维过程。

6.在建立对象模型时,要经历哪些抽象思维过程?

1)

从问题领域的事物到软件模型中对象的抽象。

2)

从对象到类的抽象。

3)

从子类到父类的抽象

7.类就是程序员自定义的类型。这种说法是否正确?

不正确,类是一组具有相同属性和行为的对象的抽象。类及类的关系构成了对象模型的主要内容。开发人员需要根据先识别对象,然后再进行分类(创建任意的数据模型)的思路来建立对象模型。

8.小王本来体重70kg,经过减肥,体重降到45kg,试从这个问题领域中识别对象、类、属性、状态和状态的变化。

1)

类:人。

2)

对象:小王。

3)

属性:体重。

4)

状态:70kg。

5)

状态的变化:小王的减肥行为导致体重下降。

9.在uml图中哪些框图描述了系统的动态结构,哪些框图描述了系统的静态结构?

1)

用例图、类框图、组件图、部署图构成了系统的静态模型。

2)

状态转换图、时序图、协作图则构成了系统的动态模型。

第二章

第一个java应用

1.把一个类放在包里有什么用?

答:把类分包的作用:

(1)

能够区分名字相同的类

(2)

有助于实施访问权限控制

(3)

有助于划分和组织java应用中的各个类

c文档是不是为软件的终端用户提供的使用指南?

答:不是的,javadoc文档是供java开发人员阅读的,他们通过javadoc文档来了解其他开发人员开发的类的用法。java开发人员应该养成经常阅读javadoc文档的良好习惯。

3.对于n类,使用以下命令进行编译,文件位于什么目录下?

java –d c:classes –sourcepath c:src c:

答:将会存放在c:classescomabcdollapp下。

4.对于以上编译出来的appmain类,以下哪个java命令能正确运行它?

(a)

java c:

(b)

java –classpath c:classes appmain

(c)

java –classpath c:classescomabcdollapp appmain

(d)

java –classpath c:classes n

答:(b)

5.以下哪些main()方法的声明能够作为程序的入口方法?

(a)

public static void main()

(b)

public static void main(string[] string)

(c)

public static void main(string args)

(d)

static public int main(string[] args)

(e)

static void main(string[] args)

答:(b),主函数必须以public static void形式存在,参数必须为string数组形式。

文件中,哪些程序代码能够编译通过?

(a)

import .*;package mypackage;

class myclass{};

(b)

package mypackage;

import .*;

class myclass{};

(c)

/*this is comment*/

package mypackage;

import .*;

public class myclass{};

答:(c),程序顺序必须按照import, package, class走,源文件必须以public类型的类命名。

7.对于以下myprog类,运行命令”java myprog good morning”,将会得到打印结果?

public class myprog {

public static void main(string argv[])

{

n(argv[2]);

} }

答:打印结果为空。argv[0] = “good”, argv[1] = “morning”。

8.下面哪些是java的关键字?

(a)

default

(b)

null

(c)

string

(d)

throws

(e)

long

(f)

true

答:(a),(d),(e),(f),java中所有的关键字都是小写。

9.当appmain类的main()方法创建了5个doll对象时,运行时数据区的数据如何分布的?参考2.4节的图2-13,画出此时运行时数据区的状态图。

运行时数据区(内存)

java栈区

执行main()方法的主线程的方法调用栈

局部变量beibei

局部变量jingjing

局部变量huanhuan

局部变量yingying

局部变量nini

堆区

doll实例

name:贝贝

doll实例

name:晶晶

doll实例

name:欢欢

doll实例

name:迎迎

doll实例

name:妮妮

方法区

doll类型信息

appmain类型信息

(包含main()方法信息)

10.下面哪些是合法的java标识符?

(a)

#_pound

(b)

_underscore

(c)

5interstate

(d)

interstate5

(e)

_5_

(f)

class

答:(b),(d),(e)标识符命名规则如下:

(1)

标识符首字母必须为字母、下划线“_”、美元“$”、人民币“¥”(2)

标识符由数字、大写字母、小写字母、下划线以及美元等组成

(3)

不能把关键字和保留字作为标识符

(4)

标识符没有长度的限制

(5)

标识符是大小写敏感的第三章

数据类型和变量

1.对于以下程序,运行“java abs”,将得到什么打印结果?

public class abs

{

static int a = 0x11;

//十六进制

static int b = 0011;

//八进制

static int c = 'u0011';

//十六进制数据的unicode字符编码

static int d = 011;

//八进制

/**

* @param args

*/

public static void main(string[] args)

{

n(“a=”+a);

n(“b=”+b);

n(“c=”+c);

n(“d=”+d);

} }

答:输出如下

a=17 b=9 c=17 d=9

2.以下哪段代码能正确编译通过?

(a)

char a = „a‟;

char b = 1;

char c = 08;

(b)

int a = „a‟;

(c)

long a =‟u00ff‟;

(d)

char a = „u0ff‟;

(e)

char d = “d”;

答:(b)、(c)能通过编译。(a)中“char c=08”将int赋值给char需要部分强制转换,“char c=8”就正确;(d)中unicode编码错误,java采用的是ucs-2编码,共16位;(e)字符赋值是使用单引号,字符串string赋值时才使用双引号。

3.下面哪些代码能编译通过?

(a)

short myshort=99s;

(b)

string name = „excellent tutorial mr green‟;(c)

char c = 17c;

(d)

int z = 015;

答:(d)可以编译通过。(a)中char赋值给short需要强制转换;(b)中string类型赋值用双引号;(c)中int赋值给char需要部分强制转换。

4.字符“a”的unicode字符编码为65.下面哪些代码正确定义了一个代表字符“a”的变量?

(a)

char ch=65;

(b)

char ch=‟65‟;

(c)

char ch =‟u0041‟;

(d)

char ch=‟a‟;

(e)

char ch =”a”

答:(c)、(d)可以得到”a”。(b)的输出为5,其他无法编译通过。

5.以下代码共创建了几个对象?

string s1=new string(“hello”);

string s2=new string(“hello”);

string s3=s1;

string s4=s2;

答:共创建了2个对象。栈区4个局部变量分别引用了堆区的2个实例,而2个实例又引用了工作区的同一个类。

6.以下代码能否编译通过?假如能编译通过,运行时将得到什么打印结果?

class test {

static int myarg = 1;

public static void main(string[] args)

{

int myarg;

n(myarg);

} }

答:无法编译通过,因为局部变量myarg声明之后java虚拟机就不会自动给它初始化为默认值,若在使用前未被初始化,编译会报错。

7.对于以下程序,运行“java mystery mighty mouse”,将得到什么打印结果?

public class mystery

{

public static void main(string[] args)

{

changer c = new changer();

(args);

n(args[0]+“ ”+args[1]);

}

static class changer

{

void method(string[] s)

{

string temp = s[0];

s[0] = s[1];

s[1] = temp;

}

} }

答:打印结果为“mighty mystery”

8.对于以下程序,运行“java pass”,将得到什么打印结果?

public class pass

{

static int j = 20;

public static void main(string[] args)

{

int i=10;

pass p = new pass();

d(i);

n(“i=”+i);

n(“j=”+j);

}

public void amethod(int x)

{

x*=2;

j*=2;

} }

答:打印结果是

i=10 j=40

其中“int x”是传参,作用域仅在amethod之中。

第四章 操作符

1.以下哪些程序代码能够编译通过?

(a)

int i=0;if(i){

n(“hello”);}

(b)

boolean b1=true;

boolean b2=true;

if(b1==b2){

n(“so true”);}

(c)

int i=1;

int j=2;

if(i==1||j==i){

n(“ok”);}

(d)

int i=1;

int j=2;

if(i==1&|j==i){

n(“ok”);}

答:(b)、(c)能编译通过。(a)中int不能作为boolean出现,(d)中不能出现&|该操作符。

2.运行以下程序,将得到什么打印结果?

n(-1>>>1);

n(-1>>1);

n(2>>1);

n(1<<<1);

答:>>>是逻辑右移位操作符,也称不带符号右移位操作符,在移位的过程中二进制数开头填0;>>是右移位操作符,也称带符号右移位操作符,舍弃末尾,在开头填符号位;<<<操作符不存在;

11111111 11111111 11111111 11111111

-1>>>1

01111111 11111111 11111111 11111111

11111111 11111111 11111111 11111111

-1>>1

11111111 11111111 11111111 11111111

00000000 00000000 00000000 00000010

2>>1

00000000 00000000 00000000 00000001

2147483647-1 1

3.以下temp变量最终取值是什么?

long temp =(int)3.9;

temp %= 2;

答:取值为1。

4.以下代码能否编译通过?假如能编译通过,运行时将得到什么打印结果?

if(5 & 7 > 0 && 5 | 2)n(“true”);

答:int型不能作为boolean型出现。

5.以下代码能否编译通过?假如编译通过,运行时将得到什么打印结果?

int output=10;

boolean b1 = false;

if((b1==true)&&((output+=10)==20)){

n(“we are equal”+output);} else {

n(“not equal!”+output);}

答:not equal!10

6.以下代码能否编译通过?假如能编译通过,运行时将得到什么打印结果?

int output=10;

boolean b1 = false;

if((b1==true)&((output+=10)==20)){

n(“we are equal”+output);} else {

n(“not equal!”+output);}

答:not equal!20

7.对于以下声明:

string s1=new string(“hello”);

string s2=new string(“there”);

string s3=new string();

下面哪些是合法的操作?

(a)

s3=s1+s2;

(b)

s3=s1-s2;

(c)

s3=s1&s2

(d)

s3=s1&&s2

答:(a)是合法操作。除了“+”能用于字符串的连接以外,其他操作符(如“-”、“&”、“&&”等)都不支持string类型的操作元。

第五章

流程控制

1.运行以下代码,将得到什么打印结果?

int i = 3;

int j = 0;

double k = 3.2;

if(i < k)

if(i == j)

n(i);

else

n(j);

else

n(k);

答:0

2.以下代码能否编译通过?假如能编译通过,运行时将得到什么打印结果?

int i = 4;

switch(i){

default:

n(“default”);

case 0:

n(“zero”);

break;

case 1:

n(“one”);

case 2:

n(“two”);}

答:可以编译通过,打印结果是:

default

zero

分析:default可以放在任何位置上,一旦符合一个case即从头执行到尾,不再判断case。

3.以下哪些是合法的

(a)

int i;for(i=5, int j=10;i<10;j--){}

(b)

int i,j;for(i=0, j=10;i<10, j>0;i++, j--){}

猜你喜欢 网友关注 本周热点 精品推荐
精选文章
基于你的浏览为你整理资料合集
2025年《java面向对象编程》 java面向对象程序设计题(五篇) 文件夹
复制