面向对象(类与对象)
类与对象
这里我们先不涉及代码,我们先聊一聊我们所生活的世界。
在现实世界中,所有的人都具有相同的行为和特征,我们将这些行为和特征分离出来,形成一个抽象的概念就称为人类。那么人在现实世界中是一定存在的,但是大家必须明白人类在现实世界中并不存在。那么只要是满足人类的行为和特征的物体,我们就称为人。但是人类是用来描述我们人的一个抽象的概念并不是确实存在的。
在上述描述中,人类被称为类,人就称为对象。
计算机使我们人类发明的,所以它理所应当也应该按照人类的思维。在计算机中,在内存中存在的就称为对象,类并不是真实存在的。
类
对具有相同行为和特征的对象,抽离出来一个抽象的概念,也可以称为对象的模板。
定义类的语法:
[修饰符] class 类名{
[成员]
[修饰符] 类型 变量;
[修饰符] 返回类型 方法(参数){
}
}
请大家记住无论是包名,类名,变量名,方法名,都不能使用关键字,不能以数字开头,特殊符号只有’$‘和’_'可以开头,名字一般要求见名知义,尽量不要用汉语拼音来命名。另外也不要模糊的命名,比如你要定义一个小时的变量你给其命名为hour,一看就很明显,但是如果你想省点事定义了一个h,可能当时15分钟,15个小时内你都是记得的。但是也许半个月后你又来看自己的代码。。。你能保证你自己记得到吗?
下面我们来一段代码结尾类部分:
//package 包 oop包名(一般全部小写多个包名用.分割) 定义了当前类所属的包
package oop;
import oop.Person;//导包
public class Person {
/**
* 成员变量
* private 私有的
* String 字符串类型
* name 变量名 首字母小写,多个单词时,第一个单词首字母小写,其他首字母大写
*
*/
private String name;
private int age;
/**
* 成员方法
* public 公共的
* void 表示无返回值
* walk 方法名
* () 参数
* {}方法体
*/
public void walk() {
System.out.println(name+"正在走路");
}
}
对象
对于对象的创建,前提是要求有类
类 对象名 = 值
再看如下代码:
Person p = null;//
p = new Person();
也许大家看到的只是两句简短的代码:
但是就在这两句代码被我们编译运行的时候内存中可是发生着变化:
首先当我们写Person p = null;
的时候他会在内存栈中p处开辟一个空间,那么它开辟空间后会干什么呢?不好意思这里什么都不会干。因为我们写的是null。当我们写下p = new Person();
的时候,这时候这个new它将会在堆中去开辟一片空间去真正的创建这个对象,假设这个空间的地址是0x0001。那么对于这个赋值“=”他就会将堆中内存的首地址赋值给p处也就是栈中的地址。
上一篇: spring+mybatis 的一个junit测试
下一篇: Android单元测试之--Junit