我们在学习Java的时候,都知道Java是一种面向对象编程的语言,那么面向对象编程究竟是什么意思呢?是使用对象和对象之间的交互来设计系统,将数据和相关的逻辑封装在一起。

先来看三个东西:
OOA(Object-Oriented Analysis):面向对象分析方法;
OOD(Object-Oriented Design):面向对象设计;
OOP(Object Oriented Programming):面向对象编程。

可能大家都会听过这样一种说法,实现编码在整个开发的过程中占比并不多,有过实际项目经验的朋友可能更能够深刻的理解,前期设计做精做细有多重要,为了实现功能直接coding,结果发现因为前期设计不合理,全部做了无用功,需要推翻重来,都是血与泪的教训。

面向对象,什么是对象,在Java中对于类和对象的理解是一道坎,我也借着回顾的机会把我的思考和想法分享出来,供大家参考与探讨,希望大家多多指正。

Java中的类,之前写数据类型的时候写过,除开八种基本数据类型,三种引用数据类型,就包含类,只是类不像基本数据类型一样只能存放单一类型的数据,他对具有共同属性和行为的事物的抽象,是一个抽象的概念。比如说人,人都有身高体重这些属性,也都有吃东西这种行为,把这些共有的属性和方法封装到一起,就是一个类,也就是传说中的人类。

而对象呢,比如说张三,身高178cm,体重68kg。对象是类的具体实例,对象中属性都有自己独立的取值,对象的行为也就是方法可以对自己进行操作,比如说吃东西会导致体重变重。但要注意的是,对象中的属性都有自己独立的取值,方法却是共用的一个方法,就是类中的方法,我们可以这样理解,每个人长多高多重都不一样,但人们吃东西的行为还是一样的。

简要来说,类是抽象的,可以看做是一个概念,一个模型,它里面封装着一些某类对象共有的特性(属性和行为);而对象是类的实例化,是按照类提供的模板创建的实例,是确实存在的,是有自己独立的属性和行为的。

比如人类是一个概念,而张三这个人是确实存在的;再比如车是一个概念,而一辆红色的桑塔纳是确实存在的。

我们在写一些小程序的时候,都会先定义类,定义类用class关键字;而对象呢,我们常常说new一个对象,没有对象怎么办,new一个对象出来。比如说,String s = new String(“Hello World”)就是新建了一个字符串对象。

new一个对象,又是怎么new的呢?

//类名 对象名 = new关键字 类的构造方法
Person person1 = new Person();

Person person1,只是创建了Person类的引用,并没有创建对象;
而new Person()才创建了Person类的对象。

简单说一下new关键字和构造方法:

new关键字

new关键字在生成对象时完成了三件事:
1、为对象开辟内存空间;
2、调用类的构造方法;
3、将生成的对象的地址返回。

返回的地址就存放在前面创建的引用中。

构造方法

构造方法用于完成对象属性的初始化工作。

//测试类
class Test{
	//主函数
	public static void main(String[] args){
		//新建对象
		Person zs = new Person("张三");
		//打印对象姓名
		System.out.println(zs.name);
	}
}
//人类
class Person{
	//成员变量,姓名
	String name;
	//构造方法,参数为姓名
	Person(String name){
		//将传入参数的名字赋给成员变量
		this.name = name;
	}
}

我们看上面的例子,我们在创建一个人的实例的时候传入了一个姓名参数,这个对象在初始化时就有姓名,就和我们出生之后父母取名字一样。
那么构造方法有什么特点呢:
1、构造方法的名字必须和类名完全一致(包括大小写)
2、构造方法没有返回值(并不意味着是void,void不能出现)
3、如果在定义类时没有声明构造方法,那么Java编译器会自动为类添加一个没有参数且方法体为空的构造方法
4、如果定义一个类时声明了构造方法,那么Java编译器就不会为类添加构造方法了
5、不能显式调用类的构造方法,构造方法通常是通过new关键字隐式调用
结合上面的例子,大家应该可以理解。

就先写这么多,欢迎大家批评指正。