1.什么是类?什么是对象?
1)现实生活是由很多很多对象组成的
基于对象抽出了类
2)对象:真实存在的单个的个体
类:类型、类别,代表一类个体
3)类中可以包含:
3.1)所有对象所共有的特征/属性——变量
3.2)所有对象所共有的行为———–方法
4)一个类可以创建多个对象,
同一类型的对象,结构相同,数据不同
5)类是对象的模板,对象是类的具体的实例
引用类型与基本类型
2.引用类型之间画等号:
1)指向同一个对象
2)对其中一个引用的修改影响另一个引用
eg:房子钥匙
基本类型之间画等号:
1)赋值
2)对其中一个变量的修改不会影响另一个变量
eg:身份证复印件
3.null:空,没有指向任何对象
若引用的值为null,则该引用不能再进行任何操作了
若操作则NullPointerException空指针异常
语法:
定义类的成员变量
class 类名 {
成员变量类型 变量名称;
………
}
定义类的方法
class 类名 {
返回值类型 方法名称(参数列表) {
方法体………
}
… … …
}
实参,形参
public static void main(String[] args){
String n = "zhangsan";
sayHi(n); //String name="zhangsan"; //实参
}
public static void sayHi(String name){ //形参
}
面向过程的结构化设计的缺陷:
1.缺乏对数据的封装
2.数据和方法(操作数据)的分离
基本数据类型————-不够
数组类型—————–不行
自己造数据类型———–想装什么就装什么
高质量的代码:
复用性好、扩展性好、维护性好、
可移植性好、效率好、健壮性好、可读性好……
格子类
package oo.day01;
//格子类
public class Cell {
int row; //行号
int col; //列号
void drop(){ //下落一格
row++; //行号增1
}
void moveLeft(int n){ //左移n格
col-=n; //列号减n
}
String getCellInfo(){ //获取格子的行号和列号
return row+","+col; //返回行列号
}
}
格子类的测试类
package oo.day01;
//格子类的测试类
public class CellTest {
public static void main(String[] args) {
/*
Cell c = new Cell();
c.row = 2;
c.col = 5;
c.drop();
c.moveLeft(3);
String str = c.getCellInfo();
System.out.println(str); //3,2
*/
Cell c = new Cell();
c.row = 2;
c.col = 5;
printWall(c); //Cell cc=c;
c.drop(); //c.row=3
System.out.println("下落后:");
printWall(c);
c.moveLeft(3);
System.out.println("左移后:");
printWall(c);
}
//打墙+打格
public static void printWall(Cell cc){
for(int i=0;i<20;i++){ //行
for(int j=0;j<10;j++){ //列
if(i==cc.row && j==cc.col){ //行列匹配
System.out.print("* ");
}else{
System.out.print("- ");
}
}
System.out.println(); //换行
}
}
}
学生类
package oo.day01;
//学生类
public class Student {
//成员变量
String name;
int age;
String address;
//方法
void study(){
System.out.println(name+"在学习...");
}
void sayHi(){
System.out.println("大家好,我叫"+name+",今年"+age+"岁了,家住"+address);
}
}
学生类的测试类
package oo.day01;
//学生类的测试类
public class StudentTest {
public static void main(String[] args) {
//创建学生对象
Student zs = new Student();
//给成员变量赋值
zs.name = "zhangsan";
zs.age = 25;
zs.address = "河北廊坊";
//调用方法
zs.study();
zs.sayHi();
Student ls = new Student();
ls.name = "lisi";
ls.age = 26;
ls.address = "黑龙江佳木斯";
ls.study();
ls.sayHi();
//new之后每个成员变量都有默认值
Student ww = new Student();
ww.study();
ww.sayHi();
}
}
引用类型与null的演示
package oo.day01;
//引用类型与null的演示
public class RefNullDemo {
public static void main(String[] args) {
Cell c = new Cell();
Cell cc = c; //指向同一个对象
c.row = 2;
cc.row = 5;
System.out.println(c.row); //5
Cell ccc = new Cell();
ccc.row = 6;
ccc = null; //空,没有指向任何对象
//ccc.row = 6; //NullPointerException空指针异常
}
}