JAVA类与对象的创建

JAVA类与对象的创建
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:

程序执行结果如下:

类中的方法可以操作成员变量,当对象调用该方法时,方法中出现的成员变量就是指该对象的成员变量。在上述代码中,当对象zhubajie调用speak方法后,就将自己的头修改成:“歪着头”。同样,对象sunwuk ong调用speak方法后,也将自己的头修改成:“歪着头”。

3.对象的引用和实体

当用类创建一个对象时,类中的成员变量被分配内存空间,这些内存空间称为该对象的实体,而对象中存放着引用,以确保实体由该对象操作使用。

再以例1中的Point类为例,假如分别使用类的构造方法Point(int x,int y)创建了两个对象p1、p2:

那么内存模型如图4-1-1所示:

图4-1-1对象内存模式1

假如在程序中使用了下述赋值语句:

p1=p2;

把p2的引用(p2在内存中的名字)赋给了p1,因此p1和p2本质上是一样的了。虽然在源文件中p1、p2是两个名字,但在系统看来它们的名字是一个:0xDD。系统将取消原来分配给p1的内存,即释放分配给p1的变量。这时如果输出p1.x的结果将是6,而不是12,即p1、p2有相同的实体。内存模式变成如图4-1-2所示:

图4-1-2对象内存模式2

因此,如果一个类创建的两个对象具有相同的引用,那么就具有完全相同的实体。没有实体的对象称为空对象,空对象不能使用,即不能让一个空对象去调用方法产生行为。假如程序中使用了空对象,程序在运行时会出现异常:NullPointerException。由于对象是动态地分配实体,所以Java的编译器对空对象不做检查。因此,在编写程序时要避免使用空对象。

「注」实际上,Java有所谓“垃圾收集”机制,这种机制周期地检测某个实体是否已不再被任何对象所拥有,如果发现这样的实体,就释放实体占有的内存。因此,Java编程人员不必像C++程序员那样,要时刻自己检查哪些对象应该释放内存。在上述程序中,当将p2的引用赋给p1后,最初分配给对象p1的变量(实体)所占有的内存就会被释放。

4.参数传值

当方法被调用时,如果方法有参数,参数必须要实例化,即参数变量必须有具体的值。在Java中,方法的所有参数都是“传值”的,也就是说,方法中参数变量的值是调用者指定的值的副本。例如,如果向方法的int型参数x传递一个int值,那么参数x得到的值是传递值的副本。方法如果改变参数的值,不会影响向参数“传值”的变量的值。

(1)基本数据类型参数的传值

对于基本数据类型的参数,向该参数传递的值的级别不可以高于该参数的级别,比如,不可以向int型参数传递一个float值,但可以向double型参数传递一个float值。

(2)引用类型参数的传值

Java的引用型数据包括对象、数组以及接口。当参数是引用类型时,“传值”传递的是变量的引用而不是变量所引用的实体。

如果改变参数变量所引用的实体,就会导致原变量的实体发生同样的变化,因为,两个同类型的引用型

变量如果具有同样的引用,就会用同样的实体。但是,改变参数的引用不会影响向其传值的变量的引用,如图4-1-3所示:

图4-1-3引用类型参数的传值

仔细阅读下面的例3,特别注意引用类型参数和基本数据类型参数的区别。

例3:

静态变量与静态方法的设计

选民对象的名字。以下程序在Voter类的静态方法printVoterResult()中直接访问count和name变量。

r对象的引用来访问name属性。例如:

ount静态变量、voter静态变量和name实例变量。

正常的做法是通过Sample实例的引用来访问实例方法和实例变量。

()方法。

访问修饰符与方法的重载

Java面向对象习题

选择题 1、下列关于变量的叙述哪个是错的?() A. 实例变量是类的成员变量。 B. 在方法中定义的局部变量在该方法被执行时创建。 C. 实例变量用关键字static声明。 D. 局部变量在使用前必须被初始化。 2、在Java语言中,下列哪个包是编译器自动导入的?() A. java.applet B. https://www.360docs.net/doc/407346639.html,ng C. java.io D. java.awt 3、当类的成员未用访问权限修饰符时,Java认为此成员的访问权限为()。 A. private B. protected C.friendly D.public 4、下面哪个关键字不是用来控制对类成员的访问的?() A. public B. protected C. default D. private 5、下面哪一个特性不是面向对象编程主要体现的()。 A. 封装性 B. 继承 C. 多态 D. 类 6、不允许作为类及类成员的访问控制符的是()。 A. public B. private C. static D. protected 7、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB 作为前缀就可以调用它,该方法头的形式为()。 A、static void method( ) B、public void method( ) C、final void method( ) D、abstract void method( ) 8、可以在下面代码段point x处写入的是?() //point x public class Interesting{ //do something } A. String str; B. static int PI=3.14; C. public class MyClass{//do other thing…} D. import java.awt.*; 9、下列关于变量的叙述哪个是错的?() A、实例变量是类的成员变量。 B、在方法中定义的局部变量在该方法被执行时创建。 C、实例变量用关键字static声明。 D、局部变量在使用前必须被初始化。 10、下列哪个类声明是正确的?() A、abstract final class HI{} B、abstract private move(){} C、protected private number; D、public abstract class Car{}

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.匿名对象作为实际参数传递

(完整版)Java创建对象的四种方法

Java中创建对象的四种方式 1.用new语句创建对象,这是最常见的创建对象的方法。 2.运用反射手段,调用https://www.360docs.net/doc/407346639.html,ng.Class或者https://www.360docs.net/doc/407346639.html,ng.reflect.Constructor类的newInstance()实例方法。 3.调用对象的clone()方法。 4.运用反序列化手段,调用java.io.ObjectInputStream对象的readObject()方法。 以下是代码片段: package org.whb.test.demo724; /* *测试Cloneable接口的使用 *包含第一种和第三种方法clone() *不过要注意在clone()中深复制和潜复制的理解 *实例化对象 */ class Person implements Cloneable{ private String name; private int age; public Person( String name,int age) { https://www.360docs.net/doc/407346639.html, = name; this.age = age; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name){ https://www.360docs.net/doc/407346639.html, =name; } @Override public Object clone() throws CloneNotSupportedException { // TODO Auto-generated method stub return super.clone();

JAVA基础-第3章类与对象-练习题-200910

第3章类与对象 一.选择题 1.下列不属于面向对象编程的特性是(D)。 A.封装性 B. 继承性 C. 多态性 D. 编译执行 2.下列类的声明中不合法的是(C)。 A. class People{…} B. class 植物{…} C. Class A{…} D. public class 共有类{… 3.下列方法的声明中不合法的是(C)。 A. float area(){…} B. void area(){…} C. double area(d){…} D. int area(int r){…} 4. 下列构造方法(构造器)的调用中正确的是(C)。 A. 按照一般的方法调用 B. 由用户直接调用 C. 只能通过new自动调用 D. 被系统调用 5.下列程序运行的结果是(A)。 class Book{ int width; int length; } public class A{ static void f(Book p){ p.width=20; p.length=40; } public static void main(String args[]){ Book b=new Book(); b.width=10; b.length=20; f(b); System.out.print(" "+b.width); System.out.print(" "+b.length); } } A. 20 40 B. 10 40 C. 10 20 D. 以上都不对 6.下列程序运行的结果是(D)。 public class A{ static void f(int y){ y=y+10; } public static void main(String args[]){ double x=10; f(x); System.out.println(x); } }

类和对象练习题

类和对象 一、选择题 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 创建对象 NEW

类名自定义名= new 类名() 假设我们在函数中写了如下这个简单的语句: StringBuffer str = new StringBuffer("Hello world"); 别看这个语句简单,其实包含了如下三个步骤: 首先,newStringBuffer("Helloworld")在堆里申请了一坨内存,把创建好的StringBuffer 对象放进去。 其次,StringBufferstr声明了一个指针。这个指针本身是存储在栈上的(因为语句写在函数中),可以用来指向某个StringBuffer类型的对象。或者换一种说法,这个指针可以用来保存某个StringBuffer对象的地址。 最后,当中这个等于号(赋值符号)把两者关联起来,也就是把刚申请的那一坨内存的地址保存成str的值。

引用对象之间的赋值、判相等 通过上述的图解,大伙儿应该明白指针变量和该指针变量指向的对象是一个什么关系了吧。 还是接着刚才的例子,再来看赋值的问题。对于如下语句: StringBuffer str2 = str; 这个赋值语句是啥意思捏?实际上就是把str的地址复制给str2,记住,是地址的复制,StringBuffer对象本身并没有复制。所以两个指针指向的是同一个东东。 再搞一张示意图,如下(今天画这些图把我累坏了):

实际上两个指针的值相同,则肯定是指向同一个对象(所以对象内容必定相同)。但是两个内容相同的对象,它们的地址可能不一样(比如克隆出来的多个对象之间,地址就不同)。 final常量的问题 针对引用类型变量的final修饰符也是很多人搞混淆的地方。实际上final只是修饰指针的值(也就是限定指针保存的地址不能变)。至于该指针指向的对象,内容是否能变,那就管不着了。所以,对于如下语句: final StringBuffer strConst = new StringBuffer(); 你可以修改它指向的对象的内容,比如: strConst.append(" "); 但是不能修改它的值,比如: strConst = null; 传参的问题 引用类型(在函数调用中)的传参问题,是一个相当扯的问题。有些书上说是传值,有些书上说是传引用。搞得Java程序员都快成神经分裂了。所以,我们最后来谈一下“引用类型参数传递”的问题。 v还是拿刚才的例子,假设现在要把刚才创建的那一坨字符串打印出来,我们会使用如下语句: System.out.println(str);这个语句又是什么意思捏?这时候就两说了。 第一种理解:可以认为传进函数的是str这个指针,指针说白了就是一个地址的值,说得再白一点,就是个整数。按照这种理解,就是传值的方式。也就是说,参数传递的是指针本身,所以是传值的。 第二种理解:可以认为传进去的是StringBuffer对象,按照这种理解,就是传引用方式了。因为我们确实是把对象的地址(也就是引用)给传了进去。

Java实验 类和对象

一、实验目的 掌握类和对象的定义,以及它们之间的关系 学习类中属性和方法的设计 会用UML图来对类进行描述 熟悉修饰符的作用,会用set/get方法对数据进行封装 二、实验要求 设计一个名为Rectangle的类表示矩形。这个类包括: ?两个名为width和height的私有double型数据域。用来表示宽、高。默认值为1.0。 ?创建默认矩形的无参构造方法。 ?一个创建width和height为指定值的矩形的构造方法。 ?一个名为GetArea()的公有方法返回矩形面积double ?一个静态的Compare方法,比较两个矩形的面积大小是否相等并返回一个布尔型结果,相等返回true,不等返回false; 画出UML 类图,实现Rectangle类,编写测试程序创建两个Rectangle类的对象。第一个对象的width为1,height为1;第一个对象的width为5,height为6。调用compare方法判断两个矩形是否相等并显示结果。 三、实验内容 1.使用Jude工具绘制UML图

2.编写代码实现类Rectangle package edu.neu.li.test; publicclass Rectangle { privatedouble width; privatedouble height; public Rectangle() { this.width = 1.0; this.height = 1.0; public Rectangle(double width, double height) { this.width = width; this.height = width; } publicdouble GetArea() { returnthis.width * this.height ; } publicstaticboolean Compare(Rectangle rec1, Rectangle rec2) { if(rec1.GetArea()==rec2.GetArea()) { returntrue; } returnfalse; } }

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实验报告——对象和类

成绩: 面向对象原理与Java实践课程实验报告 实验1:对象和类 姓名 ____ 班级 ____ 学号 ____ 实验地点 ____ 实验时间 ____ 指导教师 ____

面向对象原理与Java实践课程实验报告 实验1:对象和类 一、实验目的: ●掌握类的定义及应用方法 ●掌握对象的创建方法,了解实例变量、实例方法和静态字段的特性 ●体会Java在类和对象的设计中体现的面向对象的思想 二、实验要求: ●具备Java基础知识(教材第1、2章内容) ●掌握Java中对象和类的基本概念和应用方法(教材第3章内容) ●设计类时注意保证类的封装性 ●编写程序完成以下实验内容并上交实验报告(包括电子文档与纸质文档) 三、实验内容: 设计并实现一个“广石化院电信学院学生通信录”系统。系统采用字符界面,在出现的主界面中按提示输入相应字符以选择“增加”、“删除”、“修改”、“查找”等功能进行操作(其中“查找”功能除能够查找某个学生的信息之外,还能够显示所有学生的信息)。记录的存储可采用数组或链表的方式。 四、设计思路: 为了实现该系统,首先要需要两个类;一个类为主界面服务,用于接收用户输入信息以及做出相关反应;一个类为学生信息服务,定义学生通讯录信息的各个字段,以及操作字段的各个方法,考虑到部分字段的属性问题,所以将操作方法都写在学生类中,不再另外放置在其他类中。学生信息将会采用学生类的对象数组来储存。 五、程序源代码: 下面是ZhuJieMian 主界面类 package pkg_TXL; import java.util.Scanner; public class ZhuJieMian { /** * * 该类为通讯录系统的主界面提供主要功能显示,以及负责主菜单与子菜单的正常跳转 */ public static void main(String[] args) {

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有一下三种方法可以创建对象实例。 1.new 通常都是使用java的关键字new来创建对象实例。 若有一个Something类,则可以通过下面的语句创建Something类的对象实例并指定到变量obj。 Something somethingNew = new Something(); 通过new创建对象实例必须把类名写在原代码里面。 2.clone 若程序写成如下,则可以根据当前对象(this)建立一个新实例对象(没有调用构造函数). public class Something implements Cloneable{ private Something obj; public Something cloneSomething() { try { obj = (Something)this.clone(); // obj = (Something)clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } return obj; } } 如果需要复制上面的那个obj指向的对象实例时,调用 somethingNew.cloneSomething()方法就ok了。 但是为什么不直接使用somethingNew.clone()呢? JDK中Object# clone()方法的原型是: protected native Object clone() throws CloneNotSupportedException; 方法修饰符是protected,而不是public。这种访问的不可见性使得我们对Object#clone()方法不可见。

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面向对象编程》([PDF] 孙卫琴著)

《JAVA面向对象编程》[PDF] 孙卫琴著 【目录】 第1章面向对象开发方法概述 1 1.1 结构化的软件开发方法简介3 1.2 面向对象的软件开发方法简介5 1.2.1 对象模型6 1.2.2 UML:可视化建模语言6 1.2.3 Rational Rose:可视化建模工具7 1.3 面向对象开发中的核心思想和概念7 1.3.1 问题领域、对象、属性、状态、行为、方法、实现7 1.3.2 类、类型9 1.3.3 消息、服务10 1.3.4 接口11 1.3.5 封装、透明12 1.3.6 抽象16 1.3.7 继承、扩展、覆盖17 1.3.8 组合19 1.3.9 多态、动态绑定22 1.4 UML语言简介24 1.4.1 用例图24 1.4.2 类框图25 1.4.3 时序图26 1.4.4 协作图27 1.4.5 状态转换图27 1.4.6 组件图28 1.4.7 部署图29 1.5 类之间的关系29 1.5.1 关联(Association)29 1.5.2 依赖(Dependency)31 1.5.3 聚集(Aggregation)31 1.5.4 泛化(Generalization)32 1.5.5 实现(Realization)32 1.5.6 区分依赖、关联和聚集关系33 1.6 实现Panel系统35 1.6.1 扩展Panel系统37 1.6.2 用配置文件进一步提高Panel系统的可维护性39 1.6.3 运行Panel系统40 1.7 小结41 1.8 思考题42 第2章第一个Java应用43 2.1 创建Java源文件43 2.1.1 Java源文件结构44

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类与对象的创建方法

类与对象的创建与使用方法 //声明RectTest类 class RectTest{ public static void main(String args[]){ Rect rect1=new Rect(); System.out.println("矩形1的信息"+rect1.toString()); Rect rect2=new Rect(33,44); System.out.println("矩形2的信息"+rect2.toString()); rect1 = rect2; System.out.println("矩形1的信息"+rect1.toString()); System.out.println("矩形1的周长: "+rect1.getPerimeter()); System.out.println("矩形1的面积: "+rect1.getArea()); System.out.println("矩形2的周长: "+rect2.getPerimeter()); System.out.println("矩形2的面积: "+rect2.getArea()); } } //声明矩形类Rect class Rect { private float length; //矩形的长度 private float width; //矩形的宽度 public Rect(){ //默认构造方法 length=0; width=0; } public Rect(float l, float w){ //带参数的构造方法 length=l; width=w; } public void setLength(float l){ //改变矩形的长度 length=l; } public float getLength(){ //得到矩形的长度 return length; } public void setWidth(float w){ //改变矩形的宽度 width=w; }

java中对象创建和初始化过程

?JAVA中对象创建和初始化过程 ? ?分析一下JAVA中对象创建和初始化过程中涉及的相关概念问题,java中栈(st ack)与堆(heap),对象、引用、句柄的概念。 @Author:ZJ 06-11-25 Blog: https://www.360docs.net/doc/407346639.html,/ 1.Java中的数据类型 Java中有3个数据类型:基本数据类型(在Java中,boolean、byte、short、int、lo ng、char、float、double这八种是基本数据类型)、引用类型和null类型。其中,引用类型包括类类型(含数组)、接口类型。 下列语句声明了一些变量: 以下是引用片段: int k ; A a; //a是A数据类型的对象变量名。 B b1,b2,…,b10000;// 假定B是抽象类或接口。 String s; 注意:从数据类型与变量的角度看,基本数据类型变量k、类类型变量a和s、抽象类或接口类型变量b(1万个),它们都是变量(标识符)。 2.关于句柄(handle) 为了区别引用类型的变量标识符和基本数据类型变量标识符,我们特别的使用Handle 来称呼引用类型的变量标识符。上面例子中b1至b10000、a、s都是Handle。Handle直观的看就是手柄、把手,我们采用计算机界常用的中文翻译“句柄”。 2.1【Windows编程中的】句柄的含义 句柄是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等。WINDOWS句柄有点象C语言中的文件句柄。 从上面的定义中的我们可以看到,句柄是一个标识符,是拿来标识对象或者项目的,它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样,但是,也可能有一个名字和你一样的人。从数据类型上来看它只是一个16位的无符号整数。应用程序几乎总是通过调用一个WINDOWS函数来获得一个句柄,之后其他的WINDOWS函数就可以使用该句柄,以引用相应的对象。 如果想更透彻一点地认识句柄,我可以告诉大家,句柄是一种指向指针的指针。我们知道,所谓指针是一种内存地址。应用程序启动后,组成这个程序的各对象是驻留在内存的。 如果简单地理解,似乎我们只要获知这个内存的首地址,那么就可以随时用这个地址访问对象。但是,如果您真的这样认为,那么您就大错特错了。我们知道,Windows是一个以虚拟

实验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());}

相关文档
最新文档