Unit01-OOP-对象和类(上)

      Unit01-OOP-对象和类(上)      

1.什么是类?什么是对象?
  1)现实生活是由很多很多对象组成的
    基于对象抽出了类
  2)对象:真实存在的单个的个体
    类:类型、类别,代表一类个体
  3)类中可以包含:
    3.1)所有对象所共有的特征/属性------变量
    3.2)所有对象所共有的行为-----------方法
  4)一个类可以创建多个对象,
    同一类型的对象,结构相同,数据不同
  5)类是对象的模板,对象是类的具体的实例
 
2.引用类型之间画等号:
  1)指向同一个对象
  2)对其中一个引用的修改影响另一个引用
    eg:房子钥匙
  基本类型之间画等号:
  1)赋值
  2)对其中一个变量的修改不会影响另一个变量
    eg:身份证复印件
    
3.null:空,没有指向任何对象
       若引用的值为null,则该引用不能再进行任何操作了
       若操作则NullPointerException空指针异常

语法:
             引用
类型       引用类型变量  指向   对象
Student    zs             =     new Student();

Student zs; //引用
int a; //变量

引用
数据类型  引用类型变量  指向   对象
Cell         c                 =     new Cell();

实参,形参
public static void main(String[] args){
  String n = "zhangsan";
  sayHi(n); //String name="zhangsan"; //实参
}
public static void sayHi(String name){ //形参
 
}

面向过程的结构化设计的缺陷:
1.缺乏对数据的封装
2.数据和方法(操作数据)的分离

基本数据类型-------------不够
数组类型-----------------不行
自己造数据类型-----------想装什么就装什么

高质量的代码:
  复用性好、扩展性好、维护性好、
  可移植性好、效率好、健壮性好、可读性好......

引用类型与基本类型

画等号

null和NullPointerException

程序示例1:

Cell.java

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; //返回行列号
    }
}

CellTest.java

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(); //换行
        }
    }
}

程序示例2:

Student.java

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);
    }
}

StudentTest.java

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空指针异常
    }
}
时间: 2024-10-10 15:56:30

Unit01-OOP-对象和类(上)的相关文章

对象和类(上)

1. 对象和类(上) 1.1. 面向对象程序设计 1.1.1. 面向过程的结构化程序设计 首先来看一个需求,实现员工信息管理,将员工简历信息中的数据:姓名.性别.年龄.薪水, 存储在信息管理系统中进行操作.可以定义一个输出雇员信息的方法进行数据的输出,传递4个参数,代码如下: /** 打印员工信息的方法 */ public static void printEmpInfo(String name,int age, chargender,double salary) { System.out.pr

C/C++知识要点6——定义只能在堆/栈上生成对象的类

在C++中,类的对象建立分为两种,一种是静态建立,如A a:另一种是动态建立,如A* ptr=new A: 区别: 静态建立一个类对象,是由编译器为对象在栈空间中分配内存,是通过直接移动栈顶指针,挪出适当的空间,然后在这片内存空间上调用构造函数形成一个栈对象.使用这种方法,直接调用类的构造函数. 动态建立类对象,是使用new运算符将对象建立在堆空间中.这个过程分为两步,第一步是执行operator new()函数,在堆空间中搜索合适的内存并进行分配:第二步是调用构造函数构造对象,初始化这片内存空

[Java学习笔记]-Java对象和类

Java是完全面向对象的高级语言,其基本的操作基本都是针对相应的对象和类.面向对象的程序是由对象组成的,每个对象包含对用户公开的特定功能部分和隐藏的实现部分.对应面向对象的语言,还有一种面向过程的语言,如C语言.面向对象的语言是在面向过程语言的基础上发展而来的.面向对象(OOP,全称为Object-Oriented-Programer,下文简称为OOP)相对于面向过程的语言而言,其优势在于很多问题的解决方法被封装在对象里,有时只需要创建这样的对象就可以解决我们的问题,而不必关心其具体实现细节,这

smartjs 0.2 OOP讲解 - Klass 类继承

SmartJS2.0加入OOP的功能.OOP包括klass与factory两个对象. Klass 类继承 与其他的类继承相比,smartjs使用了执行指针的概念(后面例子中会介绍),另外提供base基类和初始化控制的扩展功能. 首先来看看接口: var _klass = st.klass(name, prop, parent, config); //new _klass() 与 _klass()效果相同,实现了自初始化功能更 var obj = new _klass(); name : 类名 p

oc中的oop基础及类的基本介绍

面向对象的(OOP)的基础知识 类(class):表示一组对象数据的结构体,对象通类来得到自身.类名首字母大写. 对象(objcet):是一种包含值和指向其类的隐藏指针的结构体.运行中的程序中通常会有n个对象,首字母不用大写. 实例(instance):是对对象的另一种称呼. 消息(message):是对象执行的操作,用于通知对象去做什么.对象接收到消息后,将查询相应的类,来执行正确的代码运行程序. 方法(method):j是为响应消息而运行的代码,这个以后在oop中会很常用.根据类的对象或消息

javascript学习笔记---ECMAScriptECMAScript 对象----定义类或对象

使用预定义对象只是面向对象语言的能力的一部分,它真正强大之处在于能够创建自己专用的类和对象. ECMAScript 拥有很多创建对象或类的方法. 原始的方式 因为对象的属性可以在对象创建后动态定义(后绑定),类似下面的代码: var oCar = new Object; oCar.color = "blue"; oCar.doors = 4; oCar.mpg = 25; oCar.showColor = function() { alert(this.color); };不过这里有一

Java核心技术(三) —— 对象与类(1)

本文将对Java程序设计的对象和类进行深入详细介绍,主要涉及以下内容: - 面向对象程序设计 - 如何创建标准Java类库中的类对象 - 如何编写自己的类 1.OOP概述 面向对象的程序是由对象组成的,每个对象包含对用户公开的特定功能部分和隐藏的实现部分.在OOP中,不必关心对象的具体实现,只要能够满足用户的需求即可. OOP中,数据是第一位的,然后再考虑操作数据的算法. 1.1 类 类是构造对象的模板或蓝图,可以将类想象成制作小甜饼的切割机,将对象想象成小甜饼.由类构造对象的过程称为创建类的实

艾恩ASP无组件上传类(上传组件)说明文档(from www.sysoft.cc)

艾恩ASP无组件上传类(上传组件)说明文档2010-1-18 By Anlige一.简介自从接触ASP就开始接触上传,看过一些上传类,但是总感觉封装的还是不够简单,因此自己尝试写一个能够用最少最简单的代码实现各种上传方式的上传类.在学校期间就开始写,一点点的完善.优化,到现在的版本,现在的版本能适应各种上传方式.上传类的主要的功能如下:1.自由设置最大上传大小.单文件最大上传大小2.自由设置允许上传的文件类型3.可设置文本的编码,以适应各种上传环境4.内置进度条,a用户可选择开启和关闭5.多种错

Swift中文教程(五)--对象和类

原文:Swift中文教程(五)--对象和类 Class 类 在Swift中可以用class关键字后跟类名创建一个类.在类里,一个属性的声明写法同一个常量或变量的声明写法一样,除非这个属性是在类的上下文里面,否则,方法和函数的写法也是这样: 1 class Shape { 2 var numberOfSides = 0 3 func simpleDescription() -> String { 4 return "A shape with \(numberOfSides) sides.&q

.NET 基础 一步步 一幕幕[面向对象之对象和类]

对象和类 本篇正式进入面向对象的知识点简述: 何为对象,佛曰:一花一世界,一木一浮生,一草一天堂,一叶一如来,一砂一极乐,一方一净土,一笑一尘缘,一念一清静.可见"万物皆对象". 对象:包含数据和操作的实体.   面向过程:面向的是完成这件事儿的过程,强调的是完成这件事儿的动作.   举例:把大象塞进冰箱里 1.打开冰箱门 2.把大象塞进去 3.关闭冰箱门 如果我们用面向对象的思想来解决这件事儿,当执行这件事的人的不同的时候,我们需要为每个不同的人量身定做解决事情的方法. 面向对象:找