欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

面向对象(类与对象)

程序员文章站 2024-03-15 18:42:03
...

类与对象

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

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

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

[修饰符]  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处也就是栈中的地址。
面向对象(类与对象)