对象和类
首先说一下结构化程序的缺陷:
(1)缺乏对数据的封装
(2)数据和方法的分开
抽象数据类型:将不同类型的数据的集合组成一个整体来描述一个新的事物
一,什么是类?
1.现实世界中是由对象组成的,基于这些对象,抽出了类。
2.类:类型,类别,代表一类个体,对象:独立的个体。
3.类是一种数据类型(引用类型)。
4.类中可以包括:
(1)所有对象所共有的属性——变量
(2)所有对象所共有的方法——方法
5.一个类可以创建多个对象,同一个类创建的对象,结构相同,数据不同。
6.类是对象的模板,对象是类的实例。
二,定义类的成员变量
1.类的定义包括”成员变量“的定义和”方法“的定义,其中成员变量用于描述改类型对象共同的数据结构。
2.java语言中,类的成员变量的定义可以使用如下语法:
class 类名 {
成员变量类型 变量名称;
}
3.对象创建后,其成员可以按照默认的方式初始化。
4.初始化对象成员变量时,器默认值的规则如下所示:
成员变量类型 默认初始值
数值类型(byte,short,int,long,double,float) 0
boolean false
char型 /u0000
引用类型 null
三,定义类的方法
1.类的方法:用于描述对象的行为,封装对象的功能。
2.java语言中可以按下列方式定义类的方法
class 类名 {
修饰词 返回值类型 方法名称(参数列表) {
方法体 ;
}
}
四,使用new关键字创建对象
1.类定义完成后,可以使用new关键字创建对象,创建对象的过程成为实例化。
2.new运算的语法为: new 类名();
3.引用类型变量:为了能够对实例化的对象进行访问控制,需要使用一个特殊的变量——引用。
(1)引用类型变量可以存放该类对象的地址信息,通常称为”指向该类的对象“;当一个引用类型变量指向该类的对象时,就可以通过这个变量对对象实施访问。
(2)除8种基本类型外,用类,接口,数组等声明的变量都称之为引用类型的变量,简称”引用“;
五,引用类型变量的赋值
1.引用类型变量存储的是对象的地址信息,相同类型的引用变量之间也可以相互赋值。
2.引用类型变量之间的赋值不会创建新的对象,但有可能会使两个以上的引用指向同一个对象。
Cell c = new Cell();
类 引用 对象
class Cell{
int row;
int col;
}
Emp el = new Emp();
Emp e2 = e1; //将e1的值(对象的地址信息)赋给e2,e2和e1指向相同的对象
六,null和nullPointerException
1.对于引用类型变量,可以对其赋值为null,null的含义为”空“,表示指向任何对象。
例,Emp emp = null; //引用emp中的值为null,没有指向任何对象
emp = new emp(); // 用emp指向Emp对象。
2.当一个引用的值为null的时候,如果通过引用访问对象或成员变量或者调用方法是不合逻辑的,此时会产生nullPointerException
例:Jframe frame = null ;
frame.setSize(200,300);
"空"代表不再指向任何对象。
七,方法的前面与重载
1.方法的签名包含两个方面,方法名和参数列表。
2.
一个类中,不可以有两个方法的签名完全相同,哪一个类中不可以有两个方法的名字和参数列表完全一样。
3
.如果一个类的两个方法只是方法名相同而参数列表不同,即为重载,是可以的。
4.在java语言中,允许多个方法的名称相同,但参数列表不同,称之为方法的重载。
5
.编译器在编译时会根据签名来绑定调用不同的方法,我们可以把重载的方法看成是完全不同的方法,只不过方法名相同而已。
6.Java中重载时,方法名相同,只能为参数类型不同,与返回值,参数名无关。
八.构造方法。
1.常常用于给成员变量赋初值。
2.与类名相同,没有返回值,也
不能写void。
3.在创建对象时被自动调用。
4.
若自己不写构造方法,则编译器默认提供一个无参构造方法,若自己写了构造方法,则编译器不再默认提供无参构造方法。
5.构造方法可以重载
语法:
【访问修饰符】 类名(){
// 构造方法体
}
九,this的用法。
1.this指代当前对象,那个对象调用就是那个对象。
2.在方法中访问成员变量,默认有个this,在没有歧义情况下可以省略this。
3.
this.成员变量名——访问成员变量 this.方法名——调用方法 this.()——调用构造方法
4.成员变量和局部变量可以相同。
5.在构造方法中,用来初始化成员变量的参数一般和成员变量去相同的名字,这样有利于代码的可读性,但此处就必须通过this关键字来区分成员变量和参数(不能省略this)
例:
public Cell(int row,int col) {
this.row = row ;
this.col = col ;
}
十.数组的引用
1.在java中,数组属于引用数据类型。
2.数组对象在堆中存储,数组属于引用类型,存储数组对象的地址信息,指向数组信息。
3.数组的元素可以看成数组对象的成员变量(只不过类型全部相同)
int [] arr = new int [2] ;
栈 堆
int []
arr[0] 0
arr 0×50 arr[1] 1
arr[2] 2
4.引用类型数组的声明,数组的元素可以是任何类型,当然也可以包括引用类型
5.引用类型数组的初始化
(1)引用类型数组的默认值为null
(2)如果希望每一个都指向具体的对象,需要针对每一个数组元素进行”new“运算。
6.数组的类型是基本类型数组。
(1)数组的元素可以为任何类型,也包括数组类型。
例:
int [][] arr = mew int [2][2]; arr [0] = new int [2]; arr [1] = new int[3];
解释:arr指向一个数组,该数组有2个元素,每个元素都是int类型数组,长度分别为 2,3。
(2)当元素为数组的数组,且每个元素的长度相同时,在其他语言有专门的这种结果成为二维数组,
但严格来说在java语言中没有正真的二维数组。
例:
int [] [] arr = new [2][2];
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
arr[i][j] = 0;
}
}