标签:
对象(object):代表现实世界中可以明确标识的一个实体。例如:一个学生、一张桌子等。每个对象都有自己独特的标识、状态和行为。
构造方法是一种特殊的方法,具有以下三个特性:
new ClassName (arguments); new 类名 (参数);
通常情况下,一个类会提供一个没有参数的构造方法,即无参构造函数。如果类中没有定义构造方法,则系统会提供一个默认的方法体为空的无参构造方法,即默认构造方法。(default constructor)。
一个类的例子:
public class TV { int channel = 1; int volumeLevel = 1; boolean on = false; //默认无参构造函数 public TV(){} //带参数的构造函数 public TV(int newChannel, int newVolumeLevel, boolean newOn){ this.channel = newChannel; this.volumeLevel = newVolumeLevel; this.on = newOn; } //方法 public void turnOn(){ on = true; } public void turnOff(){ on = false; } public void setChannel(int newChannel){ if (on && newChannel >= 1 && newChannel <= 120) channel = newChannel; } public void setVolume(int newVolumLevel){ if (on && newVolumLevel >= 1 && newVolumLevel <= 7) volumeLevel = newVolumLevel; } public void channelUp(){ if (on && channel < 120) channel++; } public void channelDown(){ if (on && channel > 1) channel--; } public void volumeUp(){ if (on && volumeLevel < 7) volumeLevel++; } public void volumeDown(){ if (on && volumeLevel > 1) volumeLevel--; } }
调用实例:
Now the TV‘s channel is 10 , and volum level is: 3 Now the TV‘s channel is 30 , and volum level is: 4
对象是通过引用变量来访问的,该变量包含对对象的引用,使用如下语句声明引用变量:
ClassName objectRefVar; 类名 对象引用变量
Circle myCircle = new Circle();//创建一个对象,并将其引用赋值给变量myCircle
ClassName objectRefVar = new ClassName(); 类名 对象引用变量 = new 类名(); //声明对象引用变量,创建对象以及将对象的引用赋值给这个变量的语句
在java中,数组被看成是对象。数组是用new操作符创建的。一个数组变量实际上就是一个包含数组引用的变量。
创建一个对象后,其数据和方法可以使用圆点(.)运算符来访问和调用。该运算符.也称为对象成员运算符:
objectRefVar.dataField; //引用对象的数据域 objectRefVar.method; //(参数)调用对象的方法
myCircle.radius //引用myCircle的半径
java中的垃圾回收:如果原来两个引用变量c1, c2分别指向不同的对象,但是后来由于引用赋值,c1与 c2都指向c1所指的对象,那么c2之前引用的对象就是无用的了,称为了垃圾(garbage)。垃圾会占用内存空间。Java运行系统会检测垃圾并自动回收它所占用的空间,这个过程称为垃圾回收(garbage collection)。
--如果你认为不再需要某个对象,可以显示地给该对象的引用赋null值。
Circle类:
package demo; public class Circle { double radius; //圆的半径 static int numberOfObjects = 0; //创建实例对象的个数 Circle(){ radius = 1.0; numberOfObjects++; } Circle(double newRadius){ radius = newRadius; numberOfObjects++; } static int getNumberOfObjects(){ return numberOfObjects; } double getArea(){ return radius * radius * Math.PI; } }
测试类:
package demo; public class TestCircle { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("创建对象前:"); System.out.println("实例的个数为:" + Circle.numberOfObjects); Circle c1 = new Circle(); //创建c1 System.out.println("创建c1后,c1的半径为:" + c1.radius + ", c1的面积为: "+ c1.getArea()); System.out.println("实例的个数为:"+ c1.numberOfObjects); Circle c2 = new Circle(2.5); System.out.println("创建c2后,c2的半径为:" + c2.radius + ", c2的面积为: "+ c2.getArea()); System.out.println("实例的个数为:"+ c2.numberOfObjects); } }
输出:
创建对象前: 实例的个数为:0 创建c1后,c1的半径为:1.0, c1的面积为: 3.141592653589793 实例的个数为:1 创建c2后,c2的半径为:2.5, c2的面积为: 19.634954084936208 实例的个数为:2
为了防止对数据域的直接修改,使用private修饰符将数据域声明为私有的,称为数据域的封装。
为了修改和访问私有数据域,定义get和set方法:get(读取器)返回数据域的值,set(设置器)给数据域设置新值。
get方法的签名: public returnType getPropertyName() 如果返回值是boolean类型: public boolean isPropertyName() set方法的签名: public void setPropertyName( dataType propertyValue )
Circle [] circleArray = new Cricle [10] ; //创建10个circle对象数组 初始化circleArray数组: for( int i = 0; i < 10; i++){ circleArray[i] = new Circle(); }
标签:
原文地址:http://www.cnblogs.com/luts/p/5001169.html