java 面向对象
对象
对象:软件中被管理的实体/个体,如:一个员工,一个格子,一个飞机,一个僵尸,一个植物,都是对象。
对象:由一组数据组成。其中每个数据称为:对象的属性。
类
类:用于定义对象的数据结构。用于声明一组数据,将一组数据的声明“重用”!
提示:根据对象的特点设计类的数据结构,也就是根据对象设计类,这种设计编程的方式称为 面向对象编程
简单的说:类是对象的模板
案例:
//根据员工信息设计了员工类:
/*
* 类,用于创建对象的模板,定义了对象的结构
* 定义了对象(一组数据)的结构
* 仅仅是“结构”的定义,并没有具体的数据。
*/
class Emp{
String name;
int age;
char gender;
double salary;
}
//根据学生对象的信息设计学生类
class Student{
int sid;
String name;
char gender;
boolean married;
double weight;
}
//根据俄罗斯方块的格子对象设计了格子类
/*
* 俄罗斯方块中的小格子
* 没有小格子都是由一组3个数据组成
* row 格子的行
* col 格子的列
* color 格子的颜色
* 重要:类是对象的数据结构, 不是具体数据
*/
class Cell{
int row;//行
int col;// Column 列
int color; //颜色(RGB)
}
new 运算
new 用于创建对象
- 根据类中声明的属性分配对象的存储空间
- 在内存堆中分配对象的存储空间
- 按照对象的属性分配存储空间
- 所有对象的属性,有默认的值
- byte short int long: 0
- float double: 0.0
- boolean: false
- char: \0
- 引用类型: null
案例:
class Student{
int sid;
String name;
char gender;
boolean married;
double weight;
}
Student stu = new Student();
System.out.println(stu.name);//null
System.out.println(stu.sid);//0
System.out.println((int)stu.gender);//0
System.out.println((int)stu.weight);//0.0
System.out.println((int)stu.married);//false
对象的内存管理
注意:类中定义的变量称为类的成员变量,成员变量在对象中初始化,是对象的数据称为对象的属性。
案例:
public class Demo02 {
public static void main(String[] args) {
/**
* 俄罗斯方块中的小格子
*/
Cell c1 = new Cell();
Cell c2 = new Cell();
c1.row = 6;
c1.col = 3;
System.out.println(c1.row);//6
}
}
class Cell{
int row;//行
int col;// Column 列
int color; //颜色(RGB)
}
成员变量
成员变量:是在类中定义的变量称为类的成员变量,而成员变量是在创建对象时候分配为对象的属性。 成员变量 和 对象属性 是同一回事!
静态成员现象,在static章节详细讲解。
方法
在类中可以为对象声明方法,用于封装复杂的对象功能算法,方法被全体对象共享复用,调用这些方法就可以复用代码,提高编程效率。
调用方法:
变量.方法()
案例:
public class Demo04 {
public static void main(String[] args) {
Cell1 c = new Cell1();
c.row = 6;
c.drop();//调用格子下落的方法
System.out.println(c.row); //7
c.moveRight();//调用格子右移动方法
System.out.println(c.col);//1
c.moveLeft(); //调用格子左移动方法
System.out.println(c.col);//0
}
}
class Cell1{
int row;
int col;
public void drop(){
row++;
}
public void moveRight(){
col++;
}
public void moveLeft(){
col--;
}
}
引用类型变量
使用 类 作为类型声明的变量,称为引用类型变量,引用类型变量的值是对象的地址值,引用变量通过对象的地址引用了对象。
注意:应用类型变量的直接值是地址值,间接引用了对象。引用变量的值不是对象!!!
引用变量值可以赋值为null,表示不引用任何的对象。
null和NullPointerException
当引用变量的值是 null时,访问了其属性(元素)、方法,将出现空指针异常。
引起空指针异常的条件有两个:引用值为null 和 访问了属性(元素)和方法。
如何解决空指针异常:
1. 将引用变量合理的赋值,使其引用对象
2. 避免调用null值引用的属性和方法
案例:
Cell1 c2 = null;
int n = c2.row;//出现空指针异常
解决1:
Cell1 c2 = new Cell();
int n = c2.row;
解决2:
Cell1 c2 = null;
if(c2!=null){
int n = c2.row;
}