面向对象(类与对象)

类与对象

这里我们先不涉及代码,我们先聊一聊我们所生活的世界。
在现实世界中,所有的人都具有相同的行为和特征,我们将这些行为和特征分离出来,形成一个抽象的概念就称为人类。那么人在现实世界中是一定存在的,但是大家必须明白人类在现实世界中并不存在。那么只要是满足人类的行为和特征的物体,我们就称为人。但是人类是用来描述我们人的一个抽象的概念并不是确实存在的。

在上述描述中,人类被称为类,人就称为对象。
计算机使我们人类发明的,所以它理所应当也应该按照人类的思维。在计算机中,在内存中存在的就称为对象,类并不是真实存在的。

对具有相同行为和特征的对象,抽离出来一个抽象的概念,也可以称为对象的模板。
定义类的语法:

[修饰符]  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处也就是栈中的地址。
在这里插入图片描述

发布了64 篇原创文章 · 获赞 2 · 访问量 863

猜你喜欢

转载自blog.csdn.net/cdut2016/article/details/103787975