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. BZOJ4644 : 经典傻逼题

    设每个点的权值为和它相连的所有边的权值的异或和,那么等价于选若干个点,使得点权异或和最大,这显然只需要维护一组线性基,然后从高位到低位贪心选取即可. 对于本题,因为有修改操作,所以考虑按时间分治,并用 ...

  2. BZOJ3072 : [Pa2012]Two Cakes

    考虑DP,设$f[i][j]$表示考虑了$a[1..i]$和$b[1..j]$的最小代价. 若$a[i]==b[j]$,则$f[i][j]=\min(f[i-1][j],f[i][j-1])+1$. ...

  3. 【转】CentOS6.3安装Broadcom无线网卡驱动

    转自: http://blog.csdn.net/jimanyu/article/details/9697833 下面是具体的步骤 一:确定无线网卡的型号,驱动下载 第一步要确定机子的无线网卡型号是什 ...

  4. ACM 分数加减法

    分数加减法 时间限制:3000 ms  |  内存限制:65535 KB 难度:2   描述 编写一个C程序,实现两个分数的加减法   输入 输入包含多行数据 每行数据是一个字符串,格式是" ...

  5. AJAX 跨域请求 - JSONP获取JSON数据

    Asynchronous JavaScript and XML (Ajax ) 是驱动新一代 Web 站点(流行术语为 Web 2.0 站点)的关键技术.Ajax 允许在不干扰 Web 应用程序的显示 ...

  6. Mac OS X中MacPorts安装和使用

      安装 官网pkg安装   搜索索引中的软件port search name 安装新软件sudo port install name 卸载软件sudo port uninstall name 查看有 ...

  7. 【BZOJ】1532: [POI2005]Kos-Dicing

    题意 \(n\)个人\(m\)场比赛\((1 \le n \le 10000, 0 \le m \le 10000)\),给出每场比赛的两个选手,求赢得最多的人最少赢的场数. 分析 二分最多人赢的场数 ...

  8. Android -- 简单广播接收与发送(2)--动态注册广播接收器

    1. 效果图

  9. 0代码隐藏GroupedTableView上边多余的间隔

    0代码隐藏GroupedTableView上边多余的间隔 实现诸如支付宝的 “探索” 页面时,最简单的方案是在 Storyboard 中来一个静态 Grouped UITableViewControl ...

  10. TCP连接探测中的Keepalive和心跳包

    TCP连接探测中的Keepalive和心跳包 tcp keepalive 心跳 保活 Linuxtcp心跳keepalive保活1. TCP保活的必要性 1) 很多防火墙等对于空闲socket自动关闭 ...