类与对象
一、对象是人们要进行研究的任何事物,是现实世界中的一个实体。
类是对象的抽象。相同特征的一组对象进行抽象形成了类。简单来说就是对象是类的实例。本质上讲,类也是一种数据类型。
举个例子:
比如人就是一个类,具体到个体也就是自己就是一个对象,而这个对象有自己的属性就像你的性别,年龄等。同时,你还具有许多行为,比如工作、学习。
二、类的特点:数据封装、继承、多态性、消息传递。
三、类的一般结构:
【类修饰符】class 类名称
{
成员变量;
成员方法;
…
}
访问修饰符
修饰符的主要作用是指定类型和类型成员的可访问性(也称做作用域或可见性)。以限制类和结构,以便只有声明它们的程序或命名空间才能使用它们。可以限制类成员,以便只有派生类才能使用它们,或者限制类成员,以便只有当前命名空间或程序中的类才能使用它们。
public :访问不受限制。
protected :访问仅限于包含类或从包含类派生的类型。
Internal :访问仅限于当前程序集。
protected internal :访问仅限于当前程序集或从包含类派生的类型。
private :访问仅限于包含类型。
成员变量:描述该类的内部信息;
成员方法:对类的成员变量进行操作;
成员变量与局部变量的区别:
1、**语法形式:**成员变量是属于类的,而局部变量是在方法中定义的变量或是方法的参数;
2、**可以使用的修饰符:**成员变量可以被 public,private,static 等修饰符所修饰,而局部变量不能被访问控制修饰符及 static 所修饰;但是,成员变量和局部变量都能被 final 所修饰。
3、**变量在内存中的存储方式:**如果成员变量是使用static修饰的,那么这个成员变量是属于类的,如果没有使用static修饰,这个成员变量是属于实例的。而对象存在于堆内存,局部变量则存在于栈内存。
4、**变量在内存中的生存时间:**成员变量是对象的一部分,它随着对象的创建而存在,而局部变量随着方法的调用而自动消失。
5、**自动赋初值:**成员变量如果没有被赋初值,则会自动以类型的默认值而赋值(一种情况例外:被 final 修饰的成员变量也必须显式地赋值),而局部变量则不会自动赋值。
四、对象的创建与使用
对象的创建:
Cylinder volu;
volu = new Cylinder();
对象的使用:
对象名.对象成员
例题:
class Cylinder{
double R;
double H;
double pi = 3.14;
void S(){
System.out.println("底面积="+pi*R*R);
}
double V(){
return(pi*R*R)*H;
}
}
public class wang02{
public static void main(String[] args){
Cylinder volu = new Cylinder();
volu.R = 3.5;
volu.H = 5;
System.out.println("底面半径:"+volu.R);
System.out.println("底面的高:"+volu.H);
System.out.print("圆柱");
volu.S();
System.out.println("圆柱体体积="+volu.V());
}
}
对象数组:
如果一个数组中的元素是对象类型,则称该数组为对象数组。
当需要一个类的多个对象时,应该用该类的对象数组来表示,通过改变下标值就可以访问到不同的对象。
对象数组的定义和使用:
对象数组的定义与一般数组的定义类似,但是需要为每一个元素实例化。
对象数组的声明形式是:
类名 对象数组名 [ ];
为对象数组分配内存空间:
对象数组名=new 类名[数组长度];//注意 :此处不是构造方法了
可以将对象数组的声明和创建用一条语句来完成。例如:定义一个学生类对象数组,可以用下面的语句定义:Student stu[ ]=new Student[30]; stu [ ]是对象数组名,它所表示的数组一共有30个元素,每一个元素都是Student类的对象名,还没有实例化,所以还必须为每一个元素实例化。比如如下的过程:
for(int i=0;i<stu.length;i++)
stu[i]=new Student();
实例化以后就可以使用每一个元素对象。
例题:
public class wang03{
public static void main(String[] args){
int[] a = {12,23,86,15,67,98};
LeastNumb minNumber = new LeastNumb();
minNumber.least(a);//将数组a传入方法least
}
}
class LeastNumb{
void least(int[] array){//least是一个方法名,接收数组
int temp = array[0];//方法的内容,经典比较大小的方法:
for(int i = 1;i<array.length;i++)
if(temp>array[i])
temp = array[i];//取较小的数
System.out.println("最小的数为:"+temp);
}//此方法中包含有程序出口,所以main方法中就没有体现System.out.println()
}