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); // Cell ccc = new Cell();
ccc.row = 6;
ccc = null; //空,没有指向任何对象
//ccc.row = 6; //NullPointerException空指针异常
}
}

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

  1. Day01:对象和类(上)

    对象的概念 Java 是面向对象的编程语言,对象就是面向对象程序设计的核心.所谓对象就是真实世界中的实体,对象与实体是一一对应的,也就是说现实世界中每一个实体都是一个对象,它是一种具体的概念.对象有以 ...

  2. 0412ooday01.txt=============对象和类(上)

    对象和类(上) 面向对象程序设计:面向过程的结构化程序设计.什么是抽象数据类型.什么是类 定义一个类:定义类的成员变量.定义类的方法 创建并使用对象:使用new关键字创建对象.引用类型变量.访问对象的 ...

  3. Python-面向对象(类)一

    一.如何创建类 class cls: pass 二.创建方法 构造方法: __init__(self, arg) obj = 类('a1') 普通方法: obj = 类('xxx') obj.普通方法 ...

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

    面向对象的(OOP)的基础知识 类(class):表示一组对象数据的结构体,对象通类来得到自身.类名首字母大写. 对象(objcet):是一种包含值和指向其类的隐藏指针的结构体.运行中的程序中通常会有 ...

  5. [19/10/14-星期一] Python中的对象和类

    一.面向对象 ## 什么是对象? - 对象是内存中专门用来存储数据的一块区域. - 对象中可以存放各种数据(比如:数字.布尔值.代码) - 对象由三部分组成: 1.对象的标识(id) 2.对象的类型( ...

  6. day17-Python运维开发基础(类的封装 / 对象和类的相关操作、构造方法)

    1. 类的封装及相关操作 # ### oop 面向对象程序开发 """ #用几大特征表达一类事物称为一个类,类更像是一张图纸,表达的是一个抽象概念 "" ...

  7. 面向对象变成(OOP)-创建类和使用类

    1.1.1对象的抽象:抽象是一种归纳或总结,对象是现实世界物体特征的实例. (1)一切皆是对象. (2)类是对象的抽象. 1.1.2 对象的使用: 当对象被抽象为类以后,就可以创建具体的实例来操作了. ...

  8. JavaSE 学习笔记02丨对象与类

    Chapter 4. 对象与类 4.1 面向对象程序设计概述 面向对象程序设计(简称OOP),是当今主流程序设计范型.面向对象的程序是由对象组成的,每个对象(来自于标准库或自定义的)包含对用户公开的特 ...

  9. Java核心技术卷阅读随笔--第4章【对象与类】

    对 象 与 类 4.1 面向对象程序设计概述 面向对象程序设计(简称 OOP) 是当今主流的程序设计范型, 它已经取代了 20 世纪 70 年代的" 结构化" 过程化程序设计开发技 ...

  10. jvm源码解读--15 oop对象详解

    (gdb) p obj $15 = (oopDesc *) 0xf3885d08 (gdb) p * obj $16 = { _mark = 0x70dea4e01, _metadata = { _k ...

随机推荐

  1. ccc 多点触控

    研究了一天,多点触控的点无法保存,只能模拟多点触控了 cc.Class({ extends: cc.Component, properties: { wheelStick:{ default:null ...

  2. 20145304 《Java程序设计》课程总结

    每周读书笔记链接汇总 第一周读书笔记 第二周读书笔记 第三周读书笔记 第四周读书笔记 第五周读书笔记 第六周读书笔记 第七周读书笔记 第八周读书笔记 第九周读书笔记 第十周读书笔记 实验报告链接汇总 ...

  3. Eclipse 使用maven创建Dynamic Web Project

    今天看到spring的官网首页已经没有下载连接了,建议使用maven构建spring项目.虽然maven已经不是新技术,但是这个我还没用过,谷歌走起! 通常创建项目都是用Eclipse,前几年还是My ...

  4. Redhat5.8 环境下编译安装 Redis 并将其注册为系统服务

    系统环境: $ cat /etc/issueRed Hat Enterprise Linux Server release 5.8 (Tikanga)Kernel \r on an \m 1. 下载安 ...

  5. 素数环 Primg Ring Problem

    素数环 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=84562#problem/C 题意: 输入正整数n,把整数1~n组成一个 ...

  6. jQuery hide()并不等于hide(0)

    在实际使用中,经常用hide()函数来隐藏HTML元素,通常是没有什么问题的,但在一次做二级下拉菜单时遇到了问题,后来才发现有时候“speed”是不能省略的,即使“speed=0”,也就是说hide( ...

  7. HTTP头部解析

    当我们打开一个网页时,浏览器要向网站服务器发送一个HTTP请求头,然后网站服务器根据HTTP请求头的内容生成当次请求的内容发送给浏览器.你明白HTTP请求头的具体含意吗?下面一条条的为你详细解读,先看 ...

  8. 用Maven生成Eclipse中的Web项目

    转自:http://my.oschina.net/u/939893/blog/170185 进入workspace, 输入以下命令 mvn archetype:generate -DgroupId=  ...

  9. Python的缩进

    关于python的缩进:如果要确认一个函数包含哪些内容,java或php可以使用大括号将函数内容包含起来,但python里没有那样的大括号,python靠“缩进”(四个空格)来确定语句块的始末. 这是 ...

  10. SQL server 链接查询

    一.链接查询 1.join  on  左右链接 2.左右查询 left  right 3.union  上下链接