java百战1573答案3.docx

上传人:b****8 文档编号:23966406 上传时间:2023-05-23 格式:DOCX 页数:15 大小:23.48KB
下载 相关 举报
java百战1573答案3.docx_第1页
第1页 / 共15页
java百战1573答案3.docx_第2页
第2页 / 共15页
java百战1573答案3.docx_第3页
第3页 / 共15页
java百战1573答案3.docx_第4页
第4页 / 共15页
java百战1573答案3.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

java百战1573答案3.docx

《java百战1573答案3.docx》由会员分享,可在线阅读,更多相关《java百战1573答案3.docx(15页珍藏版)》请在冰豆网上搜索。

java百战1573答案3.docx

java百战1573答案3

1.第五章面向对象

2.简述面向对象与面向过程的区别与联系?

面向对象以功能来划分问题,面向过程以步骤划分问题。

面向对象可以有更好的可移植性与拓展性

类就是对对象特征的抽象与归纳,对象就是类的实例化,如汽车与BMW。

66对象与类的关系就是?

136、面向对象以功能来划分问题,面向过程以步骤划分问题。

面向对象可以有更好的可移植性与拓展性

138、栈,1、线程私有,不能实现线程之间共享!

2、局部变量存于栈中3、系统自动分配,内存连续,速度快

139、堆,1、new出来的对象,2、空间不连续,分配灵活,速度慢

方法区(堆)1、被所有线程共享2、用来存放永远不变或唯一内容(类代码信息,静态变量,字符串常量)

140、

141、局部变量在方法或语句块中声明,成员变量在类中方法外声明,从属于对象。

静态变量类中方法外声明时用static,从属于类

142、必须手动

143、数字0,booleanfalse,char \u0000,引用类型null;

145、不对,构造方法不用于构造类的对象

146、必须一致

147、没有返回值

148、对象实例化时,被调用

149、不能

150、自己未定义时会默认添加,自己定义了构造器,系统不添加

151、this、type=type

类创建对象,类就是构造对象的模板与蓝图,创建类的实例!

栈的特点就是?

存放什么内容?

栈的特点就是数据共享,存放的就是数据引用,对象引用,局部变量的值。

所有基本数据类型都在栈中。

堆得特点就是?

存放什么内容?

堆存放的就是具体的对象值,堆可灵活分配内存空间。

存放的就是new出来的对象。

【上机】画出如下程序的内存结构(课堂上的代码):

3.局部变量、成员变量、静态变量分别怎么声明?

局部变量不能初始化,成员变量与静态变量可以进行初始化。

不对,构造方法不用于构造类的对象

4.局部变量使用之前,必须要手动初始化不?

必须手动进行初始化!

5.如果不手动指定成员变量的值,系统将会自动初始化。

那么初始化的规则就是?

Int为0,double就是0、0,String就是nullBoolean就是false,byte就是0、0,short就是0,

6.成员变量从属于谁?

静态变量又叫什么以及从属于谁?

局部变量从属于谁?

成员变量从属于对象,静态变量又叫类变量,从属于类,局部变量从属于方法或语句块。

7.构造方法的作用就是两个:

一个构造类的对象,另一个作用就是初始化对象的属性。

种说法对不?

8.构造方法的名称必须保持跟类名一致不?

必须保持一致。

9.构造方法有没有返回值?

详细用文字描述返回值问题。

构造方法没有返回值,返回值就是对象调用这个方法后,返回一个特定类型的值,给主程序,然后继续进行!

10.构造方法如何被调用?

构造方法通过参数的类型进行调用,如果没有提供构造方法,那系统会自动提供一个无参数的构造器。

11.构造方法中能不能有return语句?

构造方法中不能有return语句,

12.系统一定会给我们添加无参数的构造方法不?

请详细解释。

不一定,当我们自己提供了个简单的构造方法后,系统就不会再提供。

13.【上机】设计一个类代表二维空间的一个点

publicclassPoints{

intx,y;

publicPoints(intx,inty){

super();

this、x=x;

this、y=y;

}

14.【上机】设计一个类代表二维空间的一个圆。

要求两个成员变量。

一个就是圆心,一

个就是半径提供计算面积的方法。

publicclassCircles{

intradius;

Pointpoints;

publicCircles(intradius,Pointpoints){

super();

this、radius=radius;

this、points=points;

}

doubleares(){

doubles=3、14*radius*radius;

returns;

}

publicstaticvoidmain(String[]args){

Pointp=newPoint(1,1);

//TODOAuto-generatedmethodstub

Circlesc=newCircles(8,p);

System、out、println(c、ares());

}

}

15.【上机】为上述Cricle类添加一个方法,计算一个点(Point对象)就是否在圆(Cricle

对象)内,并写程序验证

publicclassCircles{

intradius;

Pointpoints;

privateintx;

privateinty;

publicCircles(intradius,Pointpoints){

super();

this、radius=radius;

this、points=points;

}

publicCircles(intx,inty,intradius)

{

this、x=x;

this、y=y;

this、radius=radius;

}

doubleares(){

doubles=3、14*radius*radius;

returns;

}

booleanCirclePoint(Pointp){

doubled=(x-p、x)*(x-p、x)+(y-p、y)*(y-p、y);

if(d

System、out、println("点在圆内!

");

}else{

System、out、println("点不在圆内!

");

}

returnfalse;

}

publicstaticvoidmain(String[]args){

Pointp=newPoint(9,1);

//TODOAuto-generatedmethodstub

Circlesc=newCircles(8,p);

System、out、println(c、ares());

System、out、println(c、CirclePoint(p));

}

}

16.构造方法能不能重载?

可以

17.this在普通方法中,指的就是哪个对象?

在构造方法中,指的就是?

This在普通方法中指的就是自身,在构造方法中指的就是当前类;

18.static变量在内存中放置在哪个区?

static变量与方法为什么被称为类变量与类方法?

可以被该类所有对象共享不?

以下就是thinkinginjava里面的关于static的描述:

2、6、3static关键字

通常,我们创建类时会指出那个类的对象的外观与行为。

除非用new创建那个类的一个对象,否则实际上并未得到任何东西。

(注意,这里其实就就是说的引用与真正的对象创建问题)只有执行了new后,才会正式生成数据存储空间,并可使用相应的方法。

但在两种特殊的情形下,上述方法并不堪用。

一种情形就是只想用一个存储区域来保存一个特定的数据——无论要创建多少个对象,甚至根本不创建对象。

另一种情形就是我们需要一个特殊的方法,它没有与这个类的任何对象关联。

也就就是说,即使没有创建对象,也需要一个能调用的方法。

为满足这两方面的要求,可使用static(静态)关键字。

一旦将什么东西设为static,数据或方法就不会同那个类的任何对象实例联系到一起。

所以尽管从未创建那个类的一个对象,仍能调用一个static方法,或访问一些static数据。

而在这之前,对于非static数据与方法,我们必须创建一个对象,并用那个对象访问数据或方法。

这就是由于非static数据与方法必须知道它们操作的具体对象。

当然,在正式使用前,由于static方法不需要创建任何对象,所以它们不可简单地调用其她那些成员,同时不引用一个已命名的对象,从而直接访问非static成员或方法(因为非static成员与方法必须同一个特定的对象关联到一起)。

有些面向对象的语言使用了"类数据"与"类方法"这两个术语。

它们意味着数据与方法只就是为作为一个整体的类而存在的,并不就是为那个类的任何特定对象。

有时,您会在其她一些Java书刊里发现这样的称呼。

为了将数据成员或方法设为static,只需在定义前置与这个关键字即可。

例如,下述代码能生成一个static数据成员,并对其初始化:

classStaticTest{

Staticinti=47;

}

现在,尽管我们制作了两个StaticTest对象,但它们仍然只占据StaticTest、i的一个存储空间。

这两个对象都共享同样的i。

请考察下述代码:

StaticTestst1=newStaticTest();

StaticTestst2=newStaticTest();

此时,无论st1、i还就是st2、i都有同样的值47,因为它们引用的就是同样的内存区域。

有两个办法可引用一个static变量。

正如上面展示的那样,可通过一个对象命名它,如st2、i。

亦可直接用它的类名引用,而这在非静态成员里就是行不通的(最好用这个办法引用static变量,因为它强调了那个变量的"静态"本质)。

StaticTest、i++;

其中,++运算符会使变量增值。

此时,无论st1、i还就是st2、i的值都就是48。

类似的逻辑也适用于静态方法。

既可象对其她任何方法那样通过一个对象引用静态方法,亦可用特殊的语法格式"类名、方法()"加以引用。

静态方法的定义就是类似的:

classStaticFun{

staticvoidincr(){StaticTest、i++;}

}

从中可瞧出,StaticFun的方法incr()使静态数据i增值。

通过对象,可用典型的方法调用incr():

StaticFunsf=newStaticFun();

sf、incr();

或者,由于incr()就是一种静态方法,所以可通过它的类直接调用:

StaticFun、incr();

尽管就是"静态"的,但只要应用于一个数据成员,就会明确改变数据的创建方式(一个类一个成员,以及每个对象一个非静态成员)。

若应用于一个方法,就没有那么戏剧化了。

对方法来说,static一项重要的用途就就是帮助我们在不必创建对象的前提下调用那个方法。

正如以后会瞧到的那样,这一点就是至关重要的——特别就是在定义程序运行入口方法main()的时候。

与其她任何方法一样,static方法也能创建自己类型的命名对象。

所以经常把static方法作为一个"领头羊"使用,用它生成一系列自己类型的"实例"。

19.静态初始化块与main方法哪个先被执行?

静态初始化块在类加载的时候就执行,main方法的执行在静态初始化块的后面才执行。

20.一个构造方法调用另一个构造方法怎么调用?

this(),这样的调用方式必须位于第一句不?

嗯必须位于第一句;

用this必须位于第一句。

 

21.package的两个作用就是什么?

Package就是包用来区别类,同名类。

不同的包下不能共享数据与变量对象。

22.增加package以后,我们在DOS下编译怎么做?

Javac把包路径也一块加上即可

23.import就是用于导入包还就是导入类?

import就是用来导入包的。

24.importJava、util、*;会不会降低程序运行速度?

为什么?

会使得程序速度变慢。

25.importstatic静态导入的作用就是导入类还就是导入类的静态属性与静态方法?

Importstatic静态导入的就是静态方法

26.如果同时导入:

Java、util、Date;Java、sql、Date;在程序中怎么区分它们?

可以在创建对象的时候加入前缀

27.【上机】完成this、static、package、import的测试代码

28.Javadoc注释怎么写?

三种方式/**

*/

//

/*

*/

29.Java项目的API文档如何生成?

请将步骤写出。

步骤;

Eclipse中project中GenerateJavadoc完成

30.面向对象中的封装,追求的就是“高内聚,低耦合”。

解释一下,内聚什么?

什么叫

耦合?

就就是类与类之间尽量减少联系,不要相互影响太多,

31.封装的几个关键字:

private,default,protected,public的含义。

私有的默认的受保护的公有的

32.一般属性就是否要设置为private?

就是

33.如果属性设置为private,如何让外部访问该属性?

通过接口

34.提供getter、setter方法的操作,Eclipse中如何实现?

Source中找generategettergandsetter

35.对于boolean类型的属性,提供的getter方法就是:

getXXX或就是isXXX?

publicbooleanisFlag(){

returnflag;

}

publicvoidsetFlag(booleanflag){

this、flag=flag;

}

36.Javabean就就是只包含属性与相关getter、setter方法,不包含业务逻辑处理的类,

这种说法对不?

37.继承的好处就是什么?

提高代码的重复性

38.Java中有多继承不?

C++中有多继承不?

单继承相比多继承优势在什么地方?

39.【上机】模仿课堂上动物世界的例子,我们自己写个例子。

40.Java的继承使用哪个关键字实现?

extends

41.定义某个类时,如果没有使用extends,那么继承了哪个类?

Object

42.Java中,有没有多继承?

请说明,Java为什么取消了多继承?

没有多继承,先从Java8之前说起。

要区分“声明多继承”与“实现多继承”。

Java就是不允许“实现多继承”,简称不允许“多继承”。

但就是Java支持“声明多继承”——Java的接口的多继承——一个类可以实现多个接口(“继承”了多个接口上的方法声明),而一个接口可以继承多个接口(同样就是“继承”了多个接口上的方法声明)。

接口只允许有方法声明而不允许有实现,因而不会出现像C++那样的实现多继承的决议问题;抽象类可以有方法实现,但要遵循Java类的单继承限制,也避免了实现多继承的问题。

这就是早期Java为了与C++区分开的一个决定。

43.重写(override)指的就是什么?

方法重写指的就是继承中的,子类重写父类。

44.假如父类有main方法,子类能不能继承?

子类能继承父类的main方法,但就是要重写main方法。

子类调用父类的main方法,同时执行main方法,子类调用子类的main方法,只能执行子类的main方法,不能执行父类的main方法。

45.Object就是所有类的根类不?

就是所有类的直接父类不?

就是根类,不就是父类,

46.在哪里查瞧Object类的源代码?

在API里面

47.Object类中的toString方法能否被子类重写?

请做测试。

可以重写tostring方法

48.【上机】完成继承、Object相关的测试代码

49.super指的就是什么?

指的就是直接父类

50.构造方法中,第一个话总就是super不?

不就是,没有父类的话就不用super

51.叙述一下,有继承结构时,构造方法的调用顺序?

先调用父类的构造方法,再调用子类构造方法

52.重写中,子类的返回值类型可不可以跟父类不完全一致?

说出您的理由。

返回值类型必须一样,返回值类型,方法名,参数列表必须全部一样

53.如何判断两个对象内容就是否相同?

重写equals(()有什么要求?

equals方法,

54.举一个现实的例子,说明多态。

子类就是父类的多种表现形式

55.多态的三个必要条件就是什么?

继承,重写,父类引用指向子类对象

56.什么就是向上转型?

什么就是向下转型?

类的向上转型,与向下转型,

接口的向上转型,向下转型

57.多态的常用使用场合有哪些?

58.Java的方法绑定采用动态绑定还就是静态绑定?

动态绑定

59.final修饰变量、方法、类分别表示什么含义?

final

 根据程序上下文环境,Java关键字final有“这就是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法与变量。

您可能出于两种理解而需要阻止改变:

设计或效率。

final类不能被继承,没有子类,final类中的方法默认就是final的。

final方法不能被子类的方法覆盖,但可以被继承。

final成员变量表示常量,只能被赋值一次,赋值后值不再改变。

final不能用于修饰构造方法。

注意:

父类的private成员方法就是不能被子类方法覆盖的,因此private类型的方法默认就是final类型的。

1、final类

 final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都就是final的。

在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会载被扩展,那么就设计为final类。

2、final方法

如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法。

使用final方法的原因有二:

第一、把方法锁定,防止任何继承类修改它的意义与实现。

第二、高效。

编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率。

例如:

public class Test1 {

public static void main(String[] args) {

// TODO 自动生成方法存根

}

public void f1() {

System、out、println("f1");

}

//无法被子类覆盖的方法

public final void f2() {

System、out、println("f2");

}

public void f3() {

System、out、println("f3");

}

private void f4() {

System、out、println("f4");

}

}

public class Test2 extends Test1 {

public void f1(){

System、out、println("Test1父类方法f1被覆盖!

");

}

public static void main(String[] args) {

Test2 t=new Test2();

t、f1();

t、f2(); //调用从父类继承过来的final方法

t、f3(); //调用从父类继承过来的方法

//t、f4(); //调用失败,无法从父类继承获得

}

3、final变量(常量)

 用final修饰的成员变量表示常量,值一旦给定就无法改变!

 final修饰的变量有三种:

静态变量、实例变量与局部变量,分别表示三种类型的常量。

 从下面的例子中可以瞧出,一旦给final变量初值后,值就不能再改变了。

 另外,final变量定义的时候,可以先声明,而不给初值,这中变量也称为final空白,无论什么情况,编译器都确保空白final在使用之前必须被初始化。

但就是,final空白在final关键字final的使用上提供了更大的灵活性,为此,一个类中的final数据成员就可以实现依对象而有所不同,却有保持其恒定不变的特征。

package org、leizhimin;

public class Test3 {

private final String S="final实例变量S";

private final int A=100;

public final int B=90;

public static final int C=80;

private static final int D=70;

public final int E; //final空白,必须在初始化对象的时候赋初值

public Test3(int x){

E=x;

}

/**

* @param args

*/

public static void main(String[] args) {

Test3 t=new Test3

(2);

//t、A=101; //出错,final变量的值一旦给定就无法改变

//t、B=91; //出错,final变量的值一旦给定就无法改变

//t、C=81; //出错,final变量的值一旦给定就无法改变

//t、D=71; //出错,final变量的值一旦给定就无法改变

System、out、println(t、A);

System、out、println(t、B);

System、out、println(t、C); //不推荐用对象方式访问静态字段

System、out、println(t、D); //不推荐用对象方式访问静态字段

System、out、println(Test3、C);

System、out、println(Test3、D);

//System、out、println(Test3、E); //出错,因为E为final空白,依据不同对象值有所不同、

System、out、println(t、E);

Test3 t1=new Test3(3);

System、out、println(t1、E); //final空白变量E依据对象的不同而不同

}

private void test(){

System、out、println(new Test3

(1)、A);

System、out、println(Test3、C);

System、out、println(Test3、D);

}

public void test2(){

final int a; //final空白,在需要的时候才赋值

final int b=4; //局部常量--final用于局部变量的情形

final int c; //final空白,一直没有给赋值、

a=3;

//a=4; 出错,已经给赋过值了、

//b=2; 出错,已经给赋过值了、

}}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 日语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1