Java的对象、类、方法和接口

Java的对象、类、方法和接口
Java的对象、类、方法和接口

1.1什么叫对象?什么叫方法?什么叫面向对象的程序设计?

面向过程的程序设计语言最重要的特点是按照解决问题的一个一个步骤来设计程序。这种语言是与解决相对比较简单的问题,当程序规模较大时,将显得纷繁复杂。

“对象”原来是描述自然界时使用的一个词语。比如,现在我正在写讲义,桌上的稿纸、手中的笔、案头的参考书、身后的电脑以及窗外的鸟都可以成为对象面向对象,就是将世界看成由许多彼此之间能联络的对象组成。

不少程序设计语言借用了对象这个词语作为一个专用名词,此时,对象也是具有状态和行为两个特征。在程序设计中,对象的状态时相对处于静态的,用变量来描述和表达;而对象的行为时动态的,他们通过“方法”来实现和完成,所以方法一定是实现对象行为的语句块。从功能上讲,方法和子程序、函数很相似。变量和方法是彼此有关、相互依赖的。当然,计算机都是用数据来表示对象的状态的,也是通过对数据的操作和修改来体现某个方法的功能的。

1.2 Java作为面向对象的程序设计语言有什么特点?

Java是面向对象的程序设计语言,从面向对象这个角度看,体现了如下三个特点:

a:封装性—面向对象的程序设计语言都是把数据和处理数据的操作结合在一起而构成一个整体,这就是对象。对象的使用者只能看到对象的外部特性,比如,其主要功能、如何调用等,而看不到内部如何实现这些功能。作为面向对象的程序设计语言,程序中的数据就是变量,程序对数据作处理则成为方法。变量和方法都被封装在对象中。所以,一个对象就是变量和方法的集合,其中变量表明这个对象的状态,方法实现这个对象所具有的行为,而且在程序中将这些变量和方法进行封装,使它们成为一个模块,再用一个名字来代表这个模块。这样,以后得更高层的程序设计中,就不必关心某个对象的行为到底是怎样实现的。可见,将对象封装就是为了使模块尽可能少地展现其内部细节,而只是以一种界面来面向外部。

对象的封装性减少了程序各部分之间的依赖,使程序的复杂性降低,而可靠性提高,并便于修改。

b:继承性—面向对象的程序设计中,对象是从类创建出来的,这一点即将在下面的解答中说明。在Java中,许多类组成层次化结构。一个类的上一层成为父类,而下一层成为子类。一个类可以继承其父类的变量和方法,而且这种集成具有传递性。就是说,一个类可以继承其上一层和其再上一层的变量和方法。这种可传递的继承性使得下层多个相似的对象可以共享上层类的数据和程序代码,而子类又可以再继承父类的基础上增添新的内容和功能。这种代码共享和代码可增添的继承特性使Java既灵活又方便提高效率。

c:通信相关性—一个对象往往涉及多个行为。体现在程序设计中,一个对象往往包含多个方法,每一个方法对应一个行为。所以,一个对象完成某个动作也就是程序执行相应的方法。于是,就涉及对象之间通过交互来实现复杂的行为,这叫对象之间的通信。

利用通信可以实现一个对象往另一个对象的信息传递。信息传递设计三个要素:一是信息接收对象;二是接收对象中用哪个方法完成指定的动作;三是比方

法需要的参数。由于信息传递的要素非常清晰,所以用在变成中将很方便。

这种通信相关性使得许多复杂功能得以实现,却有能避免编程的错综复杂。

2.1 什么叫释放对象?Java中怎么释放对象?

所谓释放对象,实质上就死后释放掉分配给对象的内存空间。Java中,对象的释放是自动完成的,不需要程序员在编程时关注这一点。Java运行系统具有所谓“垃圾收集”机制,这种机制会周期性地检测对象是否还在使用,如发现有长期不用的对象,则给予释放,回收分配给这些对象的内存,这就是垃圾收集。具体运行中,垃圾收集是由一个成为Java垃圾收集器的程序实现的。当一个对象在使用时,Java运行系统会将其对象的内存空间设置标记;而当一个对象结束使用时,会自动清除标记。有了这种标记设置和清除的规则,Java垃圾收集器就可以通过周期性地扫描所有Java对象有关的内存区域标记,将没有标记的内存区列入可供分配的范畴,从而起到垃圾收集作用。

因为垃圾收集器涉及读/写操作,相对较慢,所以,尽管扫描过程是周期性进行的,但垃圾收集操作却以较低优先级留待系统空闲周期中才得以完成。除了自动收集垃圾外,Java运行系统也允许程序员通过调用方法system.gc()请求垃圾收集。此外,Java系统开始运行时,会自动调用一个名为finalize()的方法,此方法的功能之一也是释放对象所占的内存。

3.1 类的结构和属性

在Java程序中,类是基本的组成要素,所有对象都是由类创建的,新的类必须在已有类的基础上构造,这成为类的派生。大多数类都是派生得到的。派生得到的新类成为已有类的子类,而次已有类成为父类。

3.2 类是怎样一种结构?什么叫类的成员变量?

类的结构分为两部分,一是类的说明,二是类体。格式如下:

classDeclaration{ classBody }

a:类的说明—类的说明由关键字class、类的名字和类的属性三部分组成。关键字class用固定的小写格式,类的名字是由程序员起的,可以用任意一个名词,但书写格式必须符合Java编码规定,这两部分是类的说明中必须有的内容。类的属性石可选的,用来说明此类有关的各种特性,包括说明这个类的父类是哪一个,访问这个类有什么限制等。

b:类体—类体是类的主题内容,它包括两部分:变量说明和方法。在前面已经讲到,在Java的类中,变量表明类的状态,方法实现类的行为,正是这两部分内容构成了类体。习惯上将类中的变量成为类的成员变量。成员变量的类型可以为Java的任意数据类型。在一个类中,成员变量的名字是唯一的,但成员变量的名字可以和方法的名字相同。所以,将刚才列出的类的格式再具体化一些,那就应该如下所示:

class className{

member VariableDeclarations //变量说明

methodDeclarations //方法说明

}

在比较复杂的程序中,方法往往是由许多成分构成的方法体。方法体中包含此方法要用的变量(称为局部变量),还包含多个语句构成的语句组。

在类体中,通常首先列出成员变量,然后是方法,但这不是严格规定的。必须严格遵守的规则是:类的成员变量定义必须放在类体中,但又不能包含在某个方法中。

3.3 类的属性包含哪三方面的内容?举例说明怎样表示这些内容?并作综合。

类的属性用来说明三方面的内容,即:

a.指出此类的父类(extends部分) -- 大多数类都是从父类派生得到的,父类也被称为超类(SuperClass)。在类的属性中,用关键字extends和父类名构成一个语素来说明这一点。这个语素一般放在类名字和类体之间,即采用如下格式:extends SuperClass 比如:class ImaginaryNumber extends Number{...} 有许多类是从Java系统提供的软件包https://www.360docs.net/doc/4718942246.html,ng中的Object类派生来的,这样派生的类一般不再在属性中指出父类的名字。我们一般称这些类的父类为隐含的,实际上,其父类就是Object。Object是Java中最原始的类。可见,extends 部分是可选的;

b.指出此类提供的借口(implements部分) -- 接口是和类很相似的一种数据结构,接口专门供给类调用。如果一个类要调用。这里,我们要说明的是,如果一个类要调用接口,格式如下:implements InterfaceList其中,implements 是专门用来调用接口的关键字,而InterfaceList是接口的名字。比如,有一个名为Collection的接口被雷ImaginaryNumber调用,那么,类ImaginaryNumber 的属性中就可以看到有Implements部分:class ImaginaryNumber extends Number Implements Collection{...}

通常,Implements部分放在extends部分后面,但Implements部分也是可选的,并非每个类的属性中都有这部分内容;

c.指出类的特性(修饰部分) -- 大多数类都可以再派生出子类,但是出于安全性的考虑,Java规定有些类不能再派生出子类。这样,就有了一种特别的类叫最终类。在类的属性中用关键字final来说明这种属性。Final放在类属性的前面。比如final class ImaginaryNumber extends Number Implements Collection{...}在这个类定义中,前面用final指出类ImaginaryNumber是一个最终类。还有一些类不能创造出对象来,它们仅仅是为了让子类来继承而设计的,这些类称为抽象类。这也是一种特殊的类,在类的属性中用关键字abstract 来说明这种特性。Abstract也要放在属性的前面。比如:abstract class ImaginaryNumber extends Number Implements Collection{...}

可以想到,抽象类不可能是最终类;反过来,最终类也不可能是抽象类,它们的特性正好相反,所以,abstract不会和final同时出现。

我们已经知道,由类创建出对象,而多个类组成包,同一个包中的类可以互相访问。但是有一种类,它们不但可以被同一个包中的类访问,还可以被包以外的其它类或对象访问,这些类被称为公共类。在类说明中用public来说明公告类特性,public放在类属性的最前面。与public相对应,还有一些类只能被同一个包中的其它类访问,这种类用private来说明特性。实际上,public和private 表明了类的一种访问权限。

综上所述,一个类的说明应该是按如下形式:【modifiers】class ClassName 【extends SuperClassName】【Implements InterfaceList】{...}(方括号可选) 在这些成分中,只有关键字class和类名字是必须得,其它均为可选成分。如果没有某个可选成分,在编译时,Java编译器将赋予此类以相应的默认成分。比如:非公共类、非专用类、非最终类、非抽象类,不调用任何接口,父类为Object等。

4.1 类的成员变量定义时包含哪几部分内容?

类的成员变量必须放在类体中,但不能包含在某一个方法体内,最简单的成员变量表示如下:type variableName(变量类型变量名)

实际编程中,类的成员变量在定义时往往还包含它的属性,属性指下列三方面内容:a—变量的访问权限:表示满足什么条件此变量可以被访问。访问权限用关键字public private protected 活private protected。

b—是否为静态变量:如为静态变量,则将被从此类创建的所有对象共享。就是说,可以有许多对象对一个静态变量进行不同操作。静态变量用关键字static表示。

c—是否为常量:Java往往将常量也统称为变量,常量在程序中试不能被改变的,如果企图改变,则编译时会产生出错误指示。如果一个变量其实是常量,则用final表示。

综合起来成员变量表示如下:【variableModifier】 type variableName。

5.1 方法是怎样一种结构?

在形式上,方法的结构和类的结构相似。方法也有两部分组成,一时方法说明,二是方法体。其格式如下所示:methodDeclaration{ methodBody}

a--方法说明:方法说明(methodDeclaration)指出方法类型、方法名、访问权限和入口参数。

所谓方法类型,其实是指此方法执行以后得返回值类型。返回值可以使Java 允许的任何一种数据类型,包括简单类型和数组这样的复杂类型。如果某个方法没有返回值,则称此方法的返回值void类型。

方法名可以使符合Java编码规定的任何标识符。

方法的访问权限从含义上和类的成员变量的访问权限类似。访问权限规定了此方法可以被什么样的对象调用。

方法的入口参数是由调用这个方法的对象提供的。但是,一个方法的入口参数个数和类型都在方法说明中做了规定,方法被调用时,必须符合这些规定。正是因为每个方法常常有不同的入口参数个数和类型,所以,Java允许具有不同入口参数类型或个数的几个方法用同一个名字。由于入口参数不同,编译器因此能区分它们。

b—方法体:方法体是完成方法功能的语句块,通常将这语句块用大括号{}括起来。其实,细分起来,方法体内部从形式上也可以分为两部分:一部分是变量,另一部分是语句。方法体内部定义的变量只供本方法使用,成为局部变量。

综上所述,一个方法的具体节后应如下所示:【modifiers】 type methodName (para1,para2,...){methodBody}

5.2 this 和super在方法中有什么特殊作用?它们用在什么情况下?

this 和super是Java的两个关键字,它们用在方法体中作为两个特殊的变量前缀和方法前缀。This 用来指明当前对象的成员变量或方法,以区分于同名的局部变量和其他同名的方法,而super则用于指出父类的变量和方法。

this的使用场合--一个对象中的方法一般可以直接访问通一个对象的成员变量。但是,有时候方法体内部定义的变量和成员变量名字相同,还有时方法的入口参数和对象的成员变量名字相同,那么就需要将第三者区别清楚。因此,专门用this来指明当前对象的成员变量或当前对象的方法。比如:

class ThreeColor{

int h,s,b;

ThreeColor(int h,int s,int b){

this.h=h;/*其中,右边的h为方法的入口参数,this.h为成员变量,这个语句使方法的入口参数值赋于成员变量。*/

}

}

Super的使用场合—在Java中,由父类派生子类,这样,子类的成员变量可能和父类的成员变量名字相同,子类的方法也可能和父类的方法一样。当需要调用父类的同名方法或使用父类的同名变量时,在子类中,可用关键字super作前缀来指明父类成员变量和方法。比如:

class SuperCa{

int x;

SuperCa(){

X=5;

System.out.println(“SuperCa x=”+x);

}

Void doCa(){

System.out.println(“SuperCa.doCa()”);

}

}

Calss SubCa extends SuperCa{

Int x;

SubCa(){

super();

x=8;

System.out.println(“SubCa x=”+x);

}

Void doCa(){

super.doCa();

System.out.println(“in subCa.doCa()”);

System.out.println(“super.x=”+super.x);

}

}

上述例子中,在两种情况下用了super。一是子类调用父类的构造方法,用了

super()语句;二是子类SubCa调用父类的方法doCa()时,用了super.doCa ()语句。

6.1 两个特殊的构造方法(构造方法和main()),构造方法的功能是什么?有什么特性?

在每个类中,都有一种特殊的方法,成为构造方法,构造方法的功能是对从这个类新创建的对象分配内存空间和进行初始化。每次创建对象时,系统便自动调用相应类的构造方法。构造方法的特殊之处还在于它不能独立的方法名字,而且只能有入口参数,而没有返回值。但实际上,构造方法仍然是有名字的,构造方法的名字叫init,这是由编译器隐含提供的,但此名不允许程序员使用。所以,通常总是将类的名字作为构造方法的名字。

当从一个类创建某个对象时,要用关键字new来建立对象,即为新建的对象分配内存。New语句的功能实际上就是调用类中的一个构造方法。

其实,在一个类中常常有多个构造方法,通过不同的入口参数互相区分。这多个构造方法往往可以创建多个不同的对象。这些构造方法中,一般有一个构造方法是不带入口参数的,它称为默认的构造方法。比如:

public Rectangle();//默认的构造方法

public Rectangle(int value,int value);//带两个整型入口参数的构造方法

public Rectangle(int value,int value,int value)//带三个整型入口参数的构造方法

6.2 main方法由什么特点?

Main方法也是一个特殊的方法。在Java的每个应用程序(Application)中,都必须有main方法。也正是main方法的有无,区分了能独立运行的应用程序和不能独立运行的Applet程序。Applet中一定没有main方法,而应用程序中一定包含main方法。Java解释器运行字节码文件时,首先寻找mian方法,然后一次为程序的入口点开始运行。如果一个应用程序不含main方法,那么,Java 解释器会拒绝解释和执行这个程序。而Applet中由于没有main方法,所以只能用带Java功能的浏览器或另一个成为Java观察器的appletviewer来运行。

实际上,在main方法中,可以有许多语句,通过语句可以创建对象,也可以调用其他对象中的方法。当main方法结束时,程序也运行结束。Main方法的结束可以是语句块的结束,这是常用的办法,但也可以采用System.exit语句调用系统类的exit方法退出。

在Java程序中,一般只含有一个main方法。如果一个程序含有多个main方法,那么,解释器执行程序时,只有程序最前面的第一个类所包含的main方法作为程序运行的入口点,其余类中的main方法就仅仅作为一般的方法,因而这些main方法失去了其特殊性。为了程序的可读性好,我们提倡一个程序中只用一个main方法。

main方法的参数和其他方法的参数也不同。main方法没有返回参数,而它的入口参数就是应用程序运行时在命令行给出的参数。

7.1 什么叫多重继承?Java不采用类的多重继承而用单一继承机制有什么优点?

Java不带用C++语言中的多重继承机制,这位编程带来方便。多重继承是指一个雷可以使多个父类的子类,这使类的层次关系变得很复杂;而且,如果几个父类含有相同的成员变量或相同的方法,那就回给子类的变量和方法的继承及调用带来混乱,Java采用单一继承机制,就能很清楚地表明类的层次关系,从而避免了混乱。

7.2 什么叫变量隐藏?什么叫方法置换?举例说明方法置换的原理?

在子类对父类的继承中,如果子类的成员变量和父类的成员变量同名,此时成为子类隐藏(override)了父类的成员变量。这种情况下,子类使用的变量是它自己的变量,而不是父类的同名变量。于是,父类的成员变量不能被子类简单继承,如果子类要调用父类的变量,则必须借助super关键字。还有一种情况是子类的方法名和父类的方法名相同,并且返回值的类型和入口参数的数目、类型均相同,那么在子类中,从父类继承的方法就会被置换掉。比如:

class Bird{

protected int x;

protected int y;

protected Brid(int x,int y){ //Peace的构造方法

this.x=x;

this.y=y;

}

public void draw(){...}

}

class Peace extends Bird{

private int w;

private int h;

public Peace (int x,int y,int w,int h){

super(x,y);

this.w=w;

this.h=h;

}

public void draw(){ //peace类的draw()方法

System.out.println(“Peace:”+x+”,”+y+”,”+w+”,”+h);

}

}

Class Sparrow extends Bird{

private int r;

public Sparrow(int x,int y,int r){//Sparrow的构造方法

super(x,y);

this.r=r;

}

public void draw(){ //Sparrow类的draw()方法

System.out.println(“Saprrow:”+x+”,”+y+”,”+r);

}

}

public class draw(){

public static void main(String args[]){

Bird S1=new Peace(1,2,100,200);//创建对象S1

Bird S2=new Sparrow(10,20,100);//创建对象S2

S1.draw(); //调用Peace的draw()方法 S2.draw(); //调用Sparrow的draw()方法

}

}

从上述例子中,从类Bird派生出两个子类Peace和Sparrow。这三个类中,都包含一个名为draw()的方法,而且这三个方法的入口参数要求均相同,返回值要求也想透。在34行开始的必然的BirdProgram程序中,有一个main方法,36和37行的语句则分别定义了两个对象S1和S2,它们分别是从类Peace和雷Sparrow创建的。所以,S1.draw()语句对象S1调用了类Peace中的draw()方法,而S2.draw()语句使对象S2能够调用类Sparrow中的draw()方法,这楼里,调用的都不是父类中同名的draw()方法,由此体现出父类被子类继承后,它的方法被子类的同名方法只换了。

只有子类和父类有同名、同返回值和同入口参数的方法时,才存在子类对父类的方法置换关系。但有时程序设计中仍然想使用父类中的那个有置换者的方法,此时,可借助关键字super来实现。

7.3 什么是抽象类?什么是抽象方法?它们有什么特点和用处?

抽象类是一种特殊的类。从这种类不能创建对象,而只能由其派生子类所以,抽象类是专门用来作为其他类的父类的。

在抽象类中优势还包含抽象方法。所谓抽象方法,是指只给出定义,但不包含实现语句的方法。这种抽象方法的实现必须由子类来完成。

比如在https://www.360docs.net/doc/4718942246.html,ng包中,有一个名为Number的类,它是一个代表程序中所有数字的抽象类。如果由此来创建某个数字对象,那将没有什么现实意义。但是,它可以作为Array类、Int类等代表具体的特定的数据类的父类。

抽象类的定义格式中包含关键字abstract。比如abstract class Bird{int

i=1;}

在抽象方法的定义中也用关键字abstract,但是abstract在方法中使用时由如下限制:1—构造方法不能冠以abstract;

2—凡是定义为static或private型的方法不能再加abstract;

3—如果父类中已有同名的abstract方法,那么,子类中就不能再由同名的抽象方法。另外,还有一点要指出,抽象类中不一定有抽象方法,但包含抽象方法的类必须为抽象类。

8.1 Java的接口有什么特点?引入接口的定义带来什么优点?

Java中,接口是和类相似的一种机制。不过,从结构上,接口有如下特点:1—接口中关键字interface来定义,而不是用class;

2—接口中定义的变量全是最终的静态变量;

3—接口中没有自身的构造方法,而且定义的其它方法全是时抽象方法,即只提供方法的定义,而没有提供方法的实现语句。

4—接口采用多重继承机制,而不是采用类的单一继承机制。

我们已经知道,Java的类采用单一继承机制,即一个雷只能有一个父类,这使程序的层次关系清晰、可读性好。但是,在程序设计过程中,实际上仍然存在需要多重继承的场合。所以,Java引入接口的概念,可以弥补由于雷的单一继承所留下的不足。这样既保留了类的单一继承所带来的程序简介和层次清晰等优点,又可以再需要多重继承的时候,仍然具备相应的措施。Java的这种综合机制为Java提供了更简单、更灵活、但又是更方便、更强大的功能。

8.2 当一个雷调用多个父接口的字接口是,应遵循什么规则?

接口具有多重继承的特点,即一个借口可以有多个父接口。在多种继承的情况下,如果子接口再被某个类调用,那么,这个类中必须实现子接口以及所有父接口中定义的方法。例如:interface First{...}

Interface Second{...}

Interface Three extends First{...}

Interface Fourth extends First,Second{...}

如果,有一个雷Fifth用如下语句调用和集成Fourth接口:

Class Fifth Implements Fourth{...}

那么,在Fifth的类体中,不但要实现接口Fourth中所有定义的所有方法,而且还要实现Fourth的父接口First和Second中所定义的所有方法。并且还必须注意,在实现这些方法时,要使方法的名字、返回值、入口参数一一对应。

9.1 JDK指的是什么?它包含哪些内容?

JDK是Java Developer Kits的缩写,它是Sun公司专门提供给Java用户和Java程序员使用的一系列Java开发工具软件。没有JDK,用户就无法开发任何Java程序。

JDK包含如下一些软件:

javac Java编译器

Jdb Java调试软件

Appletviewer Java观察器,用来观看嵌入Web页面的Applet Javadoc Java文档生成器

同时,JDK还包括Java的类库API(Application Program Interface)具体由如下软件包组成,每个软件包中含有许多类,这些软件包的功能如下:

https://www.360docs.net/doc/4718942246.html,ng—lang软件包提供java的核心类,比如,Object类、String类和Thread类。在下面的讲解中将会看到,这些类都是经常要用到的。Lang软件包中也包含了访问系统资源的类,如System,Runtime等。由于java系统在编译时会自动将https://www.360docs.net/doc/4718942246.html,ng包装载到内存,所以,程序中不需要用import https://www.360docs.net/doc/4718942246.html,ng语句。如要调用这个软件包中的类,可直接用类名知指明。

Java.io—提供所有用于输入/输出的类。用这些类可以实现文件的读/写、存储器读/写操作。

Java.util—提供各种工具的类和接口,也提供各种数据类型和有关的操作方法。

https://www.360docs.net/doc/4718942246.html,—提供有关网络的类和接口。利用这些类和接口,可以方便地实现各种网络功能。

Java.awt—提供实现文本、图形、窗口的类和图形用户接口(GUI)。awt软件包还包含两个软件包,即java.awt.image和java.awt.peer。

Java.awt.image—提供用于高级图形处理功能的类。

Java.awt.peer—提供有关图形组件和窗口的类和接口。

Java.applet—提供各种功能的Applet。关于Applet将在后面讲述。

Sun.tools.debug—这个软件包是Sun公司提供给java用户的调试工具包,其中包含各种用于调试的类和接口。

JDK随不同操作系统有不同版本。最常用的是UNIX版的JDK和Windows版的JDK。目前Windows版的JDK已有两个版本:JDK1.0和JDK1.1。

JAVA类和对象的关系

1、JAVA中的参数传递问题(理解内存图) 基本类型:形式参数的改变对实际参数没有影响 引用类型:形式参数的改变直接影响实际参数 2、面向对象(理解,升就业班问说说什么是面向对象和思想特点) 1、面向对象(从三点回答) A面向过程是以函数为基础,完成各种操作,强调的是过程 B面向对象以对象为基础,完成各种操作,强调的是对象,结果 C面向对象是基于面向过程的 2、面向对象的思想特点: a)是一种更符合人们思考习惯的思想 b)把复杂的事情简单化 c)把我们从执行者变成了指挥者 3、举例: a)买电脑 b)洗衣做饭 c)旅游 d)把大象装进冰箱(伪代码体现) 4、事物是如何体现的 a)属性有哪些特征名词提取法 b)行为有哪些功能 5、类与对象的关系(掌握) 把事物转换成类 A:成员变量 定义在类中,方法外 B:成员方法 和以前的区别是去掉static 把这个说完还没有说道类与对象的概念,对不对 类:是相关的属性和行为的集合,集合就是一堆东西,是一个抽象的概念 对象:是某种事物的具体的存在,具体的表现形式 举例: 学生:类 对象:小明 6、案例 A学生类 B手机类 C汽车类(在这里画了内存图,有空看一下) 7、如何使用呢 a)创建对象 i.格式 a)类名变量= new 类名() b)使用成员变量和成员方法

i.对象名.成员变量 ii.对象名.成员方法 8、成员变量和局部变量的区别(理解) A 定义位置 成员变量:在类中方法外 局部变量,在类中方法中,或者方法上的形式参数 B 初始化的区别 成员变量:有默认的初始化值 局部变量:无 C 存储位置 成员变量:堆随着对象的存在而存在 局部变量:栈随着方法的存在而存在 9、匿名对象 a)概念:没有名字的对象 b)使用场景 i.当对象中的方法只掉用一次的情况下使用(一般不用,测试时使用)new Student().sayHello(); ii.匿名对象作为实际参数传递

类和对象练习题

类和对象 一、选择题 1、下面对方法的作用描述不正确的是:( d ) A、使程序结构清晰 B、功能复用 C、代码简洁 D、重复代码 2、方法定义的变量:( b ) A 、一定在方法所有位置可见B、可能在方法的局部位置可见 C、在方法外可以使用 D、在方法外可见 3、方法的形参:(a) A、可以没有 B、至少有一个 C、必须定义多个形参 D、只能是简单变量 4、方法的调用:(c) A、必须是一条完整的语句 B、只能是一个表达式 C、可能是语句,也可能是表达式 D、必须提供实际参数 5、return 语句:( d) A、不能用来返回对象 B、只可以返回数值 C、方法都必须含有 D、一个方法中可以有多个return 语句 6、void 的含义:(d) A、方法体为空 B、方法体没有意义 C、定义方法时必须使用 D、方法没有返回值 7、main()方法的返回类型是:( c ) A 、boolean B、int C、void D、static 8、方法重载所涉及的方法:( a ) A、有相同的名字 B、参数个数必须不同 C、参数类型必须不同 D、返回类型必须不同 9、下面关于类和对象之间关系的描述,正确的是( c ) A、联接关系B、包含关系C、具体与抽象的关系D、类是对象的具体化 10、下面关于java中类的说法哪个是不正确的( c ) A、类体中只能有变量定义和成员方法的定义,不能有其他语句。 B、构造方法是类中的特殊方法。 C、类一定要声明为public的,才可以执行。

D、一个java文件中可以有多个class定义。 11、下列哪个类声明是正确的( d) A、public void H1{…} B 、public class Move(){…} C、public class void number{} D、public class Car{…} 12、下面的方法声明中,哪个是正确的(c) A、public class methodName(){} B、public void int methodName(){} C、public void methodName(){} D、public void methodName{} 13、下述哪些说法是不正确的?( b ) A、实例变量是类的成员变量 B、实例变量是用static关键字声明的 C、方法变量在方法执行时创建 D、方法变量在使用之前必须初始化 14、下面对构造方法的描述不正确是( b)。 A、系统提供默认的构造方法 B、构造方法可以有参数,所以也可以有返回值 C、构造方法可以重载 D、构造方法可以设置参数 15、定义类头时,不可能用到的关键字是( b)。 A、class B、private C、extends D、public 16、下列类头定义中,错误的是( )。 A、public x extends y {...} B、public class x extends y {...} C、class x extends y implements y1 {...} D、class x {...} 17、设A为已定义的类名,下列声明A类的对象a的语句中正确的是( ) 。 A、float A a; B、public A a=A( ); C、A a=new int( ); D、static A a=new A( ); 18、设i , j为类X中定义的int型变量名,下列X类的构造方法中不正确的是( a )。 A、void X(int k ){ i=k; } B、X(int k ){ i=k; } C、X(int m, int n ){ i=m; j=n; } D、X( ){i=0;j=0; } 19、有一个类A,以下为其构造方法的声明,其中正确的是

JAVA类与对象及数组习题及答案

JAV A类和对象及数组习题 一、选择题 (1)下列构造方法的调用方式中,正确的是(D )--原因:在通过new实例化一个类对象时系统会自动调用该类相应的构造方法。 A.按照一般方法调用B.由用户直接调用 C.只能通过new自动调用D.被系统调用 (2)在Java中,能实现多重继承效果的方式是(C )--原因:一个类可以同时实现多个接口。Java接口反映了对象较高层次的抽象,还弥补了Java只支持单继承的不足,可用它来完成多继承的一些功能。 A.内部类B.适配器C.接口D.同步 (3)int型public成员变量MAX_LENGTH,该值保持为常数100,则定义这个变量的语句是( D )—原因:java中定义常量用关键字final来定义。 A.public int MAX_LENGTH=100 B.final int MAX_LENGTH=100 C.public const int MAX_LENGTH=100 D.public final int MAX_LENGTH=100 (4)下列叙述中,正确的是( A )—原因:Java严格区分大小写,所以变量number 与Number不相同;Java 中的注释方式除了“//”行注释之外还有段注释“/*-------*/”和文档注释/**-------*/。Java源文件中的public类只能有一个。 A. 声明变量时必须指定一个类型 B. Java认为变量number与Number相同 C. Java中唯一的注释方式是"//" D. 源文件中public类可以有0或多个 (5)下列叙述中,错误的是( D )—原因:子类继承父类,并且可以有自己的成员变量和成员方法。所以可以认为子类是父类的扩展。

Java 接口与类之间继承例题

1,定义一个接口Assaultable(可攻击的),该接口有一个抽象方法attack()。 2,定义一个接口Mobile(可移动的),该接口有一个抽象方法move()。 3,定义一个抽象类Weapon,实现Assaultable接口和Mobile接口,但并没有给出具体的 实现方法。 4,定义3个类:Tank,Flighter,WarShip都继承自Weapon,分别用不同的方式实现Weapon 类中的抽象方法。 5,写一个类Army,代表一支军队,这个类有一个属性是Weapon数组w(用来存储该军队所拥有的所有武器);该类还提供一个构造方法,在构造方法里通过传一个int类型的参数来限定该类所能拥有的最大武器数量,并用这一大小来初始化数组w。该类还提供一个方法addWeapon(Weapon wa),表示把参数wa所代表的武器加入到数组w中。在这个类中还定义两个方法attackAll()和moveAll(),让w数组中的所有武器攻击和移动。 6,写一个主方法去测试以上程序。 interface Assaultable{//可攻击的 void attack(); } interface Mobile{//可移动的 void move(); } abstractclass Weapon implements Assaultable,Mobile { publicvoid attack(){} publicvoid move(){} } class Tank extends Weapon{ publicvoid attack(){ System.out.println("坦克攻击!!!"); } publicvoid move(){ System.out.println("坦克移动!!!"); } } class Flighter extends Weapon{ publicvoid attack(){ System.out.println("战斗机攻击!!!"); } publicvoid move(){ System.out.println("战斗机移动!!!");

java开发接口文档模板

竭诚为您提供优质文档/双击可除java开发接口文档模板 篇一:java的接口与实例 一、定义 java接口(interface),是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。 接口定义的一般形式为: [访问控制符]interface{ 类型标识符final符号常量名n=常数; 返回值类型方法名([参数列表]); … } 二、接口的特点 1、java接口中的成员变量默认都是 public,static,final类型的(都可省略),必须被显示初始化,即接口中的成员变量为常量(大写,单词之间用"_"分隔) 2、java接口中的方法默认都是public,abstract类型

的(都可省略),没有方法体,不能被实例化 3、java接口中只能包含public,static,final类型的成员变量和public,abstract类型的成员方法 4、接口中没有构造方法,不能被实例化 5、一个接口不能实现(implements)另一个接口,但它可以继承多个其它的接口 6、java接口必须通过类来实现它的抽象方法 7、当类实现了某个java接口时,它必须实现接口中的所有抽象方法,否则这个类必须声明为抽象类 8、不允许创建接口的实例(实例化),但允许定义接口类型的引用变量,该引用变量引用实现了这个接口的类的实例 9、一个类只能继承一个直接的父类,但可以实现多个接口,间接的实现了多继承. 三、接口的用法 1、精简程序结构,免除重复定义 比如,有两个及上的的类拥有相同的方法,但是实现功能不一样,就可以定义一个接口,将这个方法提炼出来,在需要使用该方法的类中去实现,就免除了多个类定义系统方法的麻烦。举例:鸟类和昆虫类都具有飞行的功能,这个功能是相同的,但是其它功能是不同的,在程序实现的过程中,就可以定义一个接口,专门描述飞行。 下图是分别定义鸟类和昆虫类,其都有飞行的方法。

JAVA类与对象习题

JAVA类与对象习题 一、写出一个类People,并由该类做基类派生出子类Employee和Teacher。其中People 类具有name、age两个保护成员变量,分别为String类型、整型,且具有公有的getAge 成员函数,用于返回age变量的值。Employee类具有保护成员变量empno,Teacher类有teano和zc成员变量。 二、(1)创建Rectangle类,添加属性width、height; (2)在Rectangle类中添加两种方法计算矩形的周长和面积; (3)编程利用Rectangle输出一个矩形的周长和面积 三、(1)设计一个User类,其中包括用户名、口令等属性以及构造方法(至少重载2 个)。获取和设置口令的方法,显示和修改用户名的方法等。编写应用程序测试User 类。 (2)定义一个student类,其中包括用户名、姓名、性别、出生年月等属行以及init()——初始化各属性、display()——显示各属性、modify()——修改姓名等方法。实现并测试这个类。 (3)从上题的student类中派生出Granduate(研究生)类,添加属性:专业subject、导师adviser。重载相应的成员方法。并测试这个类。 四、项目名称:Bank Account Management System 银行账户管理系统简称BAM 练习1:(面向对象基础语法) 写一个账户类(Account), 属性: id:账户号码长整数 password:账户密码 name:真实姓名 personId:身份证号码字符串类型 email:客户的电子邮箱 balance:账户余额 方法: deposit: 存款方法,参数是double型的金额 withdraw:取款方法,参数是double型的金额

JAVA类与对象的创建

试验四 类和对象的创建 一.类的定义 类是组成Java程序的基本要素。类封装了一类对象的状态和方法。类用来定义对象的模板。 类的实现包括两部分:类声明和类体。基本格式为: 修饰符class类名[extends父类名]{ /*类体的内容*/ } 1.类声明 以下是一个类声明的例子。 class People成为类声明,People是类名。习惯上,类名的第一个字母大写,但这不是必须的。类的名字不能是Java中的关键字,要符合标识符规定,即类的名字可以由字母、下划线、数字或美元符号组成,并且第一个字母不能是数字。但给类命名时,最好遵守下列规则: (1)如果类名使用拉丁字母,那么名字的首写字母使用大写字母,如Hello、Time、People等。 (2)类名最好容易识别,当类名由几个“单词”复合而成时,每个单词的首写字母使用大写,如BeijingTi me、AmericanGame、HelloChina等。 2.类体 编写类的目的是为了描述一类事物共有的属性和功能,描述过程由类体来实现。类声明之后的一对大括号“{”、“}”以及它们之间的内容称为类体,大括号之间的内容称为类体的内容。 类体的内容由两部分构成:一部分是变量的定义,用来刻画属性;另一部分是方法的定义,用来刻画功能。 下面是一个类名为“Trapezia”的类,类体内容的变量定义部分定义了4个float类型变量:top、bottom、h igh和laderArea,方法定义部分定义了两个方法:“getArea”和“setHigh”。

二.对象 1.对象的创建 创建一个对象包括对象的声明和为对象分配内存两个步骤。 (1)对象的声明。 一般格式为: 类的名字对象名字; 如: 这里People是类的名字,zhubajie是我们声明的对象的名字。 (2)为声明的对象分配内存。 使用new运算符和类的构造方法为声明的对象分配内存,如果类中没有构造方法,系统会调用默认的构造方法(你一定还记得构造方法的名字必须和类名相同这一规定),如: 例1: 「注」如果类里定义了一个或多个构造方法,那么Java不提供默认的构造方法。 2.对象的使用 对象不仅可以改变自己变量的状态,而且还拥有了使用创建它的那个类中的方法的能力,对象通过使用这些方法可以产生一定的行为。 通过使用运算符“.”,对象可以实现对自己的变量访问和方法的调用。 例2:

java继承与接口 实验报告

应用数学学院信息与计算科学专业 2 班学号3111008162 姓名许庆平教师评定_________________ 实验题目继承与接口 一、实验目的与要求 实验目的: 1、掌握类的继承关系。 2、掌握接口的定义与使用。 实验要求: 按下列要求编写Java程序: 1、定义接口Printx,其中包括一个方法printMyWay(),这个方法没有形参,返回值为空。 2、编写矩形类,矩形类要求实现Printx接口,有求面积、求周长的方法,printMyWay()方法要能显示矩形的边长、面积和周长。 3、编写正方形类作为矩形类的子类,正方形类继承了矩形类求面积和周长的方法,新增加求对角线长的方法,重写printMyWay()方法,要求该方法能显示正方形的边长、面积、周长和对角线长。 二、实验方案 先按要求定义接口Printx,再创建一个矩形类Rectangle,有成员变量length 和width,area()求面积,circle()求周长,用PrintMyWay()显示。 然后定义正方形类,继承Rectangle类,定义求对角线长的函数duijiaoxian()。面积和周长用父类中的area()和circle()实现。用PrintMyWay()显示。最后在主类中实现这两个类。 三、代码如下 interface Printx

{ void PrintMyWay();} class Rectangle implements Printx { int length,width; Rectangle(int x,int y){ length=x; width=y; } int area(){ return length*width; } int circle(){ return 2*(length+width); } public void PrintMyWay(){ System.out.println("矩形的长为:"+length); System.out.println("矩形的宽为:"+width); System.out.println("矩形的面积为:"+area()); System.out.println("矩形的周长为:"+circle()); }

Java类与对象实验报告

实验报告 一、实验项目:类与对象 二、实验目的: 1. 学会使用类来封装对象的属性和功能 2. 掌握类变量与实例变量,以及类方法与实例方法的区别 3. 掌握使用package和import语 三、实验器材:计算机、Java编程软件JCreator 四、实验原理(或仪器装置图): 1. 类与对象 类是组成Java程序的基本要素。类封装了一类对象的状态和方法。类是用来定义对象的模板。 类声明 class 类名{ 类体 } 对象的声明 一般格式为: 类的名字对象名字; 定义对象引用后,用new运算符完成对象的创建工作,分配存储空间,并对其初始化。 变量名=new 类名([构造方法实参表]); 对象的使用 访问成员的基本语法形式如下:

对象名.变量成员名 对象名.方法成员名([实际参数表]) 2.成员变量和局部变量 成员变量格式:[修饰符] 变量类型变量名[=初值]; 成员方法: 格式:[修饰符] 返回值的数据类型方法名(参数1,参数2,…) { 语句序列; return[表达式]; } 类中定义的变量是成员变量,而方法中定义的变量是局部变量。 3. 构造方法 构造方法是一种特殊的方法,创建对象时被自动调用。与一般的方法不同,它没有返回值类型的说明,方法体中也不可以用return语句带回返回值。构造方法的方法名与类名相同在构造方法中可以通过this关键字调用该类中其他的构造方法。 4.包 包是Java语言中有效地管理类的一个机制。 ①通过关键字package声明包语句。package 语句作为Java源文件的第一条语句,指 明该源文件定义的类所在的包。package语句的一般格式为:package 包名; ②import 语句:使用import 语句可以引入包中的类。 五、实验步骤及数据记录: 1.定义一个圆柱体类Cylinder,并创建相应的对象,然后计算圆柱体的底面积与体积。

Java实例对象概念图解

Java编程面向对象——类与对象的关系 面向对象是一种组件化的设计思想,OOA、OOD、OOP 类与对象是整个面向对象之中最为基础的组成单元,如果需要给划出定义:类就是共性的集合,而对象是某一个性的产物;所有类实际上是用来描述一个对象的结构。 类是通过对象来使用的,而对象是通过类来创建的。 类与对象的基本定义: 在程序中,定义类,可以使用“class 类名称{}”的语法结构完成。 而类之中的组成主要有两点: * Field (属性、成员、变量),就是一推变量的集合 * Method (方法、行为),此时的方法是由对象调用的。 这个类中定义了两个属性和一个方法(可以定义更多属性和方法) *类虽然存在,但是类的使用,必须有对象; 对象的定义格式: 声明并实例化对象: 类名称对象名称 = new 类名称(); 分步完成: 声明对象:类名称对象名称 = null; 实例化对象:对象名称 = new 类名称(); 引用数据类型: 引用数据类型最大的不同在于需要内存的开辟及使用,所以关键字new 的主要功能就是开辟内存空间; 即:只要引用数据类型想使用,就必须使用关键字new 来开辟空间。 当一个对象实例化之后就可以使用以下方式利用对象来操作类的结构: 对象.属性:表示要操作类中属性内容 对象.方法():表示要调用类中的方法内容

内存概念: 堆内存:保存每一个对象的属性内容,堆内存需要用关键字 new 才可以开辟; 栈内存:保存的是一块堆内存的地址。简单的理解,栈内存保存的是对象的名字; 编程中的栈内存和堆内存的操作过程: 引用数据的初步分析: 引用是整个 Java 开发中的核心精髓所在,即:只有掌握了“引用”这一概念之后,才能加入下一步学习,类似C/C++ 中的指针概念。 在所有的引用分析里面,最关键的还是在于关键字 “new ”,每一次使用关键字new ,都会开辟新的堆内存空间,如果你的代码里面声明两个对象,并且使用了关键字new 为两个对象分别实例化操作,那么一定是各自占有各自(独立)的堆内存空间

java类与对象

5.2.1 编程实验1:基本类定义 本实验要求在封闭实验课中在教师指导下完成。 1. 实验目的 本实验旨在巩固学生对《Java语言程序设计》中第5章内容的掌握。在这个实验中学生将练习: ? 基本类的定义。 ? 使用自定义的基本类创建对象,并进行调用。 在强化练习中,学生将练习: ? 给基本类中增加属性 ? 在测试类中将增加的属性向控制台打印输出 2. 问题描述 编写一个类,描述学生的学号、姓名、成绩。学号用整型,成绩用浮点型,姓名用String类型。 编写一个测试类,输入学生的学号和成绩,并显示该学号的学生姓名,以及成绩。 3. 示例输出 4. 程序模板 class Student{ /* 此处创建三个属性。 */ } public class T1_Student{ public static void main(String[] args){ /* 先构造Student对象,然后分别为对象的属性赋值 最后打印输出对象的各个属性。 */ } } 5. 解答提示 1)在基本类的定义中描述学生类,学生的学号、成绩和姓名作为学生类的属性来描述。2)在测试类中写main方法,作为程序的入口进行运行,在main方法中创建学生对象,并

给对象的各个属性赋予具体值。 3)在测试类中用System.out.println()方法将属性的具体值输出到控制台,完成程序的输出结果要求。 6. 强化练习 1)给学生类添加性别属性,取值为boolean类型,用true表示男,用false表示女。 2)在测试类中输出学生的姓名、学号、成绩的同时,输出性别为:男或女。 5.2.2 编程实验2:构造方法 本实验要求在封闭实验课中在教师指导下完成。 1. 实验目的 本实验旨在巩固学生对《Java语言程序设计》中第5章内容的掌握。在这个实验中学生将练习: ? 定义多个基本类 ? 构造方法的定义 ? 构造方法的重载 在强化练习中,学生将练习: ? 构造方法的多个重载 ? 只通过指定长和宽来定制桌子。 2. 问题描述 编写一个类,描述桌子,包括以下几种属性:长、宽、高、颜色。并且使该类具有这样的功能:在定制桌子(即创建桌子对象时),就可以同时指定桌子的长宽高来订制。也可以同时指定长、宽、高、颜色来订制,也可单独指定桌子颜色来订制。 并编写一个测试类测试这几种定制方法。 5.2.3 编程实验3:访问器方法 本实验要求在封闭实验课中在教师指导下完成。 1. 实验目的 本实验旨在巩固学生对《Java语言程序设计》中第5章内容的掌握。在这个实验中学生将练习: ? 编写基本类,包括私有属性 ? 给基本类添加访问器方法,从而限制属性的读、写。 ? 测试类的编写,测试访问器方法对属性的读、写限制。 在强化练习中,学生将练习: ? 在基本类中添加私有属性。 ? 给该私有属性分别添加get和set访问器方法进行读、写。 2. 问题描述 编写一个类,描述银行账户,包括收入、支出和账户余额三种属性,同时包括对这三种

java类和对象的例子

1.实现简易计算器,分别实现两个整数、三个浮点数的加法运算.(用JAVA中的类和对象) 源码如下: package days;//包名自己修改 import java.util.Scanner;//注意别忘记导入这个包名了public class NumSum { public int add(int num1,int num2){ return num1+num2; } public double add(double num1,double num2,double num3){ return num1+num2+num3; } public static void main(String[] args) { // TODO Auto-generated method stub NumSum nc=new NumSum(); NumSum nc1=new NumSum();

//调用2个整数相加的方法 //Scanner是用键盘手动输入数字。 System.out.println("请用键盘手动输入两个整数:"); System.out.println(nc.add(new Scanner(System.in) .nextInt(),new Scanner(System.in).nextInt())); //调用3个浮点数相加的方法 System.out.println("请用键盘手动输入三个浮点数:"); System.out.println(nc1.add(new Scanner(System .in).nextDouble(), new Scanner(System.in).nextDouble( ), new Scanner(System.in).nextDouble())); } }

java的接口与实例

一、定义 Java接口(Interface),是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。 接口定义的一般形式为: [访问控制符]interface <接口名> { 类型标识符final 符号常量名n = 常数; 返回值类型方法名([参数列表]); … } 二、接口的特点 1、Java接口中的成员变量默认都是public,static,final类型的(都可省略),必须被显示初始化,即接口中的成员变量为常量(大写,单词之间用"_"分隔) 2、Java接口中的方法默认都是public,abstract类型的(都可省略),没有方法体,不能被实例化 3、Java接口中只能包含public,static,final类型的成员变量和public,abstract类型的成员方法 4、接口中没有构造方法,不能被实例化 5、一个接口不能实现(implements)另一个接口,但它可以继承多个其它的接口 6、Java接口必须通过类来实现它的抽象方法 7、当类实现了某个Java接口时,它必须实现接口中的所有抽象方法,否则这个类必须声明为抽象类 8、不允许创建接口的实例(实例化),但允许定义接口类型的引用变量,该引用变量引用实现了这个接口的类的实例 9、一个类只能继承一个直接的父类,但可以实现多个接口,间接的实现了多继承.

三、接口的用法 1、精简程序结构,免除重复定义 比如,有两个及上的的类拥有相同的方法,但是实现功能不一样,就可以定义一个接口,将这个方法提炼出来,在需要使用该方法的类中去实现,就免除了多个类定义系统方法的麻烦。 举例:鸟类和昆虫类都具有飞行的功能,这个功能是相同的,但是其它功能是不同的,在程序实现的过程中,就可以定义一个接口,专门描述飞行。 下图是分别定义鸟类和昆虫类,其都有飞行的方法。 下图定义了接口,其类图如下: 实现代码如下: [java]view plaincopyprint? 1. interface Flyanimal{ 2. void fly(); 3. }

java接口作用及其好处

java接口作用及其好处 接口是实现构件可插入性的关键,可插入构件的关键在于存在一个公用的接口,以及每个构件实现了这个接口。 什么是接口? Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。 接口的两种含义:一,Java接口,Java语言中存在的结构,有特定的语法和结构;二,一个类所具有的方法的特征集合,是一种逻辑上的抽象。前者叫做“Java接口”,后者叫做“接口”。 在Java语言规范中,一个方法的特征仅包括方法的名字,参数的数目和种类,而不包括方法的返回类型,参数的名字以及所抛出来的异常。在Java编译器检查方法的重载时,会根据这些条件判断两个方法是否是重载方法。但在Java编译器检查方法的置换时,则会进一步检查两个方法(分处超类型和子类型)的返还类型和抛出的异常是否相同。 接口继承和实现继承的规则不同,一个类只有一个直接父类,但可以实现多个接口。 Java接口本身没有任何实现,因为Java接口不涉及表象,而只描述public行为,所以Java接口比Java抽象类更抽象化。 Java接口的方法只能是抽象的和公开的,Java接口不能有构造器,Java接口可以有public,静态的和final属性。 接口把方法的特征和方法的实现分割开来。这种分割体现在接口常常代表一个角色,它包装与该角色相关的操作和属性,而实现这个接口的类便是扮演这个角色的演员。一个角色由不同的演员来演,而不同的演员之间除了扮演一个共同的角色之外,并不要求其它的共同之处。 为什么使用接口? 两个类中的两个类似的功能,调用他们的类动态的决定一种实现,那他们提供一个抽象父类,子类分别实现父类所定义的方法。 问题的出现:Java是一种单继承的语言,一般情况下,哪个具体类可能已经有了一个超类,解决是给它的父类加父类,或者给它父类的父类加父类,只到移动到类等级结构的最

实验3 Java类与对象

实验三类与对象 一、实验目的 1、掌握类和构造方法的定义 2、理解静态和非静态成员变量的区别 3、掌握创建类实例的方法 4、理解Java中包的概念及其使用方法 二、实验要求 1.写一个名为Rectangle的类表示矩形。其属性包括宽width、高height和颜色color,width 和height都是double型的,而color则是String类型的。要求该类具有: (1)使用构造函数完成各属性的初始赋值 (2)使用getter和setter的形式完成属性的访问及修改 提供计算面积的getArea()方法 public class mianji { private double height; private double width; private String color; public double getHeight() { return height; } public void setHeight(double height) { this.height = height; } public double getWidth() { return width; } public void setWidth(double width) { this.width = width; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } public mianji(double width,double height,String color){ this.setColor(color); this.setHeight(height); this.setWidth(width); } public void getArea(){ double area=0; area=this.height*this.width; System.out.println("矩形的面积为"+area); } public String toString(){ String recStr="矩形的高度:"+this.getHeight() +"宽度:"+this.getWidth() +"颜色:"+this.getColor(); return recStr; } public static void main(String[] args) { mianji rec=new mianji(3, 4, "红色"); rec.getArea(); System.out.println(rec.toString());}

java中接口的定义与实现

java中接口的定义与实现 1、定义接口 使用interface来定义一个接口。接口定义同类的定义类似,也是分为接口的声明和接口体,其中接口体由常量定义和方法定义两部分组成。定义接口的基本格式如下: [修饰符] interface 接口名[extends 父接口名列表]{ [public] [static] [final] 常量; [public] [abstract] 方法; } 修饰符:可选,用于指定接口的访问权限,可选值为public。如果省略则使用默认的访问权限。 接口名:必选参数,用于指定接口的名称,接口名必须是合法的Java标识符。一般情况下,要求首字母大写。 extends 父接口名列表:可选参数,用于指定要定义的接口继承于哪个父接口。当使用extends 关键字时,父接口名为必选参数。 方法:接口中的方法只有定义而没有被实现。 例如,定义一个用于计算的接口,在该接口中定义了一个常量PI和两个方法,具体代码如下: [java] view plain copy public interface CalInterface { final float PI=3.14159f;//定义用于表示圆周率的常量PI float getArea(float r);//定义一个用于计算面积的方法getArea() float getCircumference(float r);//定义一个用于计算周长的方法getCircumference() } 注意: 与Java的类文件一样,接口文件的文件名必须与接口名相同。 实现接口 接口在定义后,就可以在类中实现该接口。在类中实现接口可以使用关键字implements,其基本格式如下: [修饰符] class <类名> [extends 父类名] [implements 接口列表]{ } 修饰符:可选参数,用于指定类的访问权限,可选值为public、abstract和final。 类名:必选参数,用于指定类的名称,类名必须是合法的Java标识符。一般情况下,要求首字母大写。 extends 父类名:可选参数,用于指定要定义的类继承于哪个父类。当使用extends关键字时,父类名为必选参数。 implements 接口列表:可选参数,用于指定该类实现的是哪些接口。当使用implements关键字时,接口列表为必选参数。当接口列表中存在多个接口名时,各个接口名之间使用逗号分隔。 在类中实现接口时,方法的名字、返回值类型、参数的个数及类型必须与接口中的完全一致,并且必须实现接口中的所有方法。例如,编写一个名称为Cire的类,该类实现5.7.1节中定义的接口Calculate,具体代码如下:

java中类与类之间的关系

类与类之间的关系对于理解面向对象具有很重要的作用,以前在面试的时候也经常被问到这个问题,在这里我就介绍一下。 类与类之间存在以下关系: (1)泛化(Generalization) (2)关联(Association) (3)依赖(Dependency) (4)聚合(Aggregation) UML图与应用代码例子: 1.泛化(Generalization) [泛化] 表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系。一般化的关系是从子类指向父类的,与继承或实现的方法相反。 [具体表现] 父类父类实例=new 子类() [UML图](图1.1) 图1.1Animal类与Tiger类,Dog类的泛化关系 [代码表现] 1.class Animal{} 2.class Tiger extends Animal{} 3.public class Test 4.{ 5. public void test() 6. { 7. Animal a=new Tiger(); 8. } 9.} 2.依赖(Dependency) [依赖] 对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。 [具体表现]

依赖关系表现在局部变量,方法的参数,以及对静态方法的调用 [现实例子] 比如说你要去拧螺丝,你是不是要借助(也就是依赖)螺丝刀(Screwdriver)来帮助你完成拧螺丝(screw)的工作 [UML表现](图1.2) 图1.2 Person类与Screwdriver类的依赖关系 [代码表现] 1.public class Person{ 2. /** 拧螺丝 */ 3. public void screw(Screwdriver screwdriver){ 4. screwdriver.screw(); 5. } 6.} 3.关联(Association) [关联] 对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。 [具体表现] 关联关系是使用实例变量来实现 [现实例子] 比如客户和订单,每个订单对应特定的客户,每个客户对应一些特定的订单;再例如公司和员工,每个公司对应一些特定的员工,每个员工对应一特定的公司 [UML图] (图1.3) 图1.3 公司和员工的关联关系 [代码表现] 1.public class Company{ 2. private Employee employee;

java第六次实验报告接口

1、实验题目 体操比赛计算选手成绩的办法是去掉一个最高分和一个最低分再计算平均分,而学校考察一个班级的某科目的考试情况时,是计算全班学生的平均成绩。Gymnastics 类和School 类都实现了ComputerAverage接口,但实现方式不同。 2、程序代码 interface ComputerAverage{ public double average(double x[]); } class Gymnastics implements ComputerAverage{ public double average(double x[]){ int count=; double aver=0,temp=0; for(int i=0;i2) aver=aver/(count-2); else aver=0; return aver; } } class School implements ComputerAverage{ public double average(double x[]){ int count=; double aver=0; for(int i=0;i0) aver=aver/count; return aver; }

java接口面试题

接口和抽象类有什么区别? 接口是公开的,不能包含私有的方法或变量,而抽象类是可以有私有方法或私有变量的, 实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法, 接口可以实现多重继承,而一个类只能继承一个超类,但可以通过继承多个接口实现多重继承, 接口还有标识(里面没有任何方法,如Remote接口)和数据共享(里面的变量全是常量)的作用. 一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。 String s = new String("xyz");创建了几个String Object? 两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。 short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型) short s1 = 1; s1 += 1;有什么错? short s1 = 1; s1 += 1;(可以正确编译) 是否可以继承String类? String类是final类故不可以继承。 try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 会执行,在return前执行。

10. 常见的runtime exception有哪些?。ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException NullPointException HashMap与HashTable的区别。

相关文档
最新文档