面向对象程序设计,简称OOP是当今主流的程序设计范型。Java是完全面向对象的。
面向对象的程序是由对象组成的,每个对象包含对用户公开的特定功能部分和隐藏的实现部分。程序中的很多对象来自标准库,还有一些是自定义的。在OOP中,不必关心对象的具体实现,只要能够满足用户的需求即可。
面向对象是一种思想,能让复杂问题简单化,程序员不需要了解具体的实现过程,只需要指挥对象去实现功能。
类:对现实生活中事物的描述。
类是构造对象的模板或蓝图。由类构造对象的过程称为创建类的实例。
封装是与对象有关的一个重要概念。从形式上看,封装不过是将数据和行为组合在一个包中,并对对象的使用者隐藏了数据的实现方式。对象中的数据称为实例域,操纵数据的过程称为方法。对于每个特定的类实例(对象)都有一组特定的实例域值。
对象:就是事物,实实在在存在的个体。
要想使用OOP,一定要清楚对象的三个主要特性:
构造器与类同名
每个类可以有一个以上的构造器
构造器可以有0个、1个或多个参数
构造器没有返回值
构造器总是伴随着new操作一起调用
显示参数明显地列在方法声明中,隐式参数没有在方法声明中。
在每一个方法中,关键字this表示隐式参数。
可以将实例域定义为final。构建对象时必须初始化这样的域。必须确保在每一个构造器执行之后,这个域的值被设置,并且在后面的操作中,不能够再对它进行修改。
final修饰符大都应用于基本类型域,或不可变类的域中的每个方法都不会改变其对象,这种类就是不可变的类。
如果将域定义为static,每个类中只有一个这样的域。而每一个对象对于所有的实例域却都有自己的一份拷贝。
由于每个类对象都可以对公有域进行修改,所以,最好不要将域设计为public。
静态方法是一种不能向对象实施操作的方法。
一个类可以有多个构造器。
StringBuilder messages = new StringBuilder();
StringBuilder todoList = new StringBuilder("To Do:\n");
上面的特征叫做重载。多个方法有相同的名字、不同的参数,便产生了重载。
Java允许重载任何访法,而不只是构造器方法。
如果在构造器中没有显式地给域赋予初值,那么就会被自动地赋为默认值:数值为0、布尔值为false、对象引用为null。
很多类都包含一个无参数的构造函数,对象由无参数构造函数创建时,其状态会设置为适当的默认值。仅当类没有提供任何构造器的时候,系统才会提供一个默认的构造器。如果在编写类的时候,给出了一个构造器,哪怕是和简单的,要想让这个类的用户能够构造实例new ClassName()
,就必须提供一个默认的构造器(不带参数的构造器)。
关键字this引用方法的隐式参数。
如果构造器的第一个语句为:this(…)
,这个构造器将调用同一个类的另一个构造器。
public Demo(double s) {
// calls Demo(String, double)
this("Demo #" + nextId, s);
nextId++;
}
当调用new Demo(6000)
时,Demo(double)
构造器将调用Demo(String, double)
构造器。
在析构器重,最常见的操作是回收分配给对象的存储空间。对于Java有自动的垃圾回收器,不需要人工回收内存,所以Java不支持析构器。当然,某些对象使用了内存之外的其他资源。在这种情况下,当资源不再需要时,将其回收和再利用将显得十分重要。
可以为一个类添加finalize
方法。finalize方法将在垃圾回收器清除对象之前调用。
关于注释,前文已经略有讲到,此处就不过多赘述,本节主要是拿出几个重要地方记录下来。
原文:https://www.cnblogs.com/yihangjou/p/13593883.html