软件的开发方式有两种,一种是面向过程,另一种是面向对象。接下来我们来了解一下面向对象的软件开发方式:
面向对象:一种基于面向过程的新的编程思想,顾名思义该思想是站在对象的角度思考问题,我们把多个功能合理的放到不同的对象里,强调的是具备某些功能的对象,具备某种功能的实体,成为对象。
面向对象的程序设计也被称为面向对象编程(OOP),基本思想是尽可能按照人类认识世界的方法和思维方式来分析和解决问题,其中最基本的概念是类和对象,最显著的特征是支持封装、继承和多态。
在软件工程上,面向对象可以使工程更加模块化,实现更低的耦合和更高的内聚。
面向对象的三大特征:
1、封装(Encapsulation):封装是指将对象的实现细节隐藏起来,然后通过公共的方法来向外暴露该对象的功能。
2、继承(Inheritance):继承是面向对象实现软件复用的重要手段,当子类继承父类后,子类是一种特殊的父类,
能直接或间接获得父类的成员。
3、多态(Polymorphism):多态是指可以直接把子类对象赋给父类变量,但是运行时依然变现出子类的行为特征, 这就意味着同一类型的对象在运行时可能表现出不同的行为特征。
面向对象的三大特征之后再详解,现在我们来学习Java中的类和对象:
什么是类:类是对象的类型/模板。创建一个对象,就是使用一个类作为构建该对象的基础。实际上,解释类和对象关系确实存在着“先有蛋还是先有鸡”的问题,描述类少不了对象,相反,描述对象少不了类。不过在面向对象编程里,我们肯定是先有类的,如果没有类,对象就没办法实例化。
类:具有相同状态(特性)和行为(功能)的对象的抽象就是类,因此,对象的抽象是类,
类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。
类具有特性,对象的状态,用成员变量来描述
类具有功能,对象的行为,用方法来描述
什么是抽象:从特定的角度出发,从已经存在的一些事物中抽取关注的特性、行为。从而形成一个新的事物的思维过程,是一种复杂到简洁的思维方法。
对象:对象可以定义成包含状态和行为的一个实体,对象(object),也称为实例(instance)。对象是人们要进行研究任何事物,一切事物都可以认为是对象。
对象具有状态和行为。
对象具有状态,比如姓名、年龄和性别等。
对象还有行为,比如吃饭、睡觉和打代码等。
对象的生命周期:
对象什么时候出生:每次使用new关键字的时候,就会在内存中开辟新的空间,此时对象开始存在。
对象的结束:当堆中的对象,没有被任何变量所引用,此时该对象就成了垃圾,就等着垃圾回收器(GC)来回收该垃圾,当被回收的时候对象被销毁了。回收垃圾的目的,释放更多的内存空间。
匿名对象:没有名称的对象,创建对象之后没有赋给某一变量。
new String();//匿名对象,匿名对象只是在堆中开辟一块新的内存空间,但是没有把该空间地址赋给任何变量。因为没有名称,匿名对象仅仅只能使用一次,一般的,把匿名对象作为方法的实参传递。
我们来创建一个String类对象:
String str = new String();
这个代码特别像在调用一个方法名称为String的无参方法。我们把这种特殊的方法称之为构造方法,构造器(构造函数/构造子:Constructor)。如果我们没有编写构造方法,那么编译器在编译源文件时,会创建一个缺省的构造器。构造器当然也可以自定义,这涉及更有意思的知识点(方法重载)。
构造器的作用:
1、创建对象,凡是必须和new一起使用;
2、完成对象的初始化操作。
构造器的特点:
1、构造器的名称和当前所在类的名称相同;
2、禁止定义返回类型,不要使用void作为返回类型;
3、在构造器中,不要使用return语句。其实构造器是有返回值的,返回的是当前创建对象的引用。
编译器创建的默认构造器的特点:
1、符合构造器的特点;
2、无参数的;
3、无方法体的;
4、如果类A没有使用public修饰,则编译器创建的构造器也没有public修饰;
使用public修饰,则编译器创建的构造器也使用public修饰。