OOP Unit01 对象和类(上)

来源:互联网 发布:牙齿矫正知乎 编辑:程序博客网 时间:2024/05/22 02:57

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空指针异常    }}
原创粉丝点击