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空指针异常 }}
阅读全文
0 0
- OOP Unit01 对象和类(上)
- OOP: 理解类和对象
- [类和对象]-C#OOP
- java OOP 类和对象
- OOP(2)类和对象,继承和多态
- OOP Unit05 抽象类、接口和内部类(上)
- OOP Unit02 对象和类(下) 、 数组
- OOP: 理解类和对象(1)
- OOP: 理解类和对象(2)
- OOP: 理解类和对象 (转载)
- LUA中的OOP(1) --- 类和对象
- OOP Unit03 对象内存管理 、 继承的意义(上)
- OOP(面向对象)
- C#OOP之类和对象
- 面向对象(oop)和继承
- OOP-----类与对象对象
- OOP-----类与对象对象
- Python2.6-原理之类和oop(上)
- 第四届“图灵杯”NEUQ-ACM程序设计竞赛总结 【8/10】
- zk集群搭建(虚拟机 linux电脑配置)
- 搭建持续集成接口测试平台(Jenkins+Ant+Jmeter)
- java.util.LinkedList源码解析
- Mac下配置MySQL 5.x
- OOP Unit01 对象和类(上)
- 计算机网络 运输层
- shell编程-流程控制-for循环
- Debian设置IP地址、网关、DNS
- 二分查找
- sleep、wait争用锁
- 写在大三末尾:10条不怎么重要的大学建议
- 【Deep Learning学习笔记】Efficient Estimation of Word Representations in Vector Space_google2013 标题:Effic
- SpringBoot简单入门