------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
面向对象(Object Oriented)是一种编程思想,早期的计算机编程是基于面向过程比如C语言,后来发展为面向对象比如JAVA语言。
一、关于面向对象
面向对象是当前计算机界关心的重点,它是软件开发方法的主流。面向对象的概念和应用已超越了程序设计和软件开发,扩展多个领域。区别于面向过程的是,面向过程注重的是过程,也就是功能。而面向对象强调的是事物本身。比如把大象放入冰箱这么一个例子,面向过程强调的是打开冰箱——>把大象放入冰箱——>关上冰箱,强调的是动作而不是事物。而面向对象着是冰箱打开——>冰箱有东西存入——>冰箱关闭,强调的是事物冰箱。
二、关于类和对象
类是具有相同属性和服务的一组对象的集合,它为属于该类的所有对象提供了统一的抽象描述。对象是抽象的类所实例化出来的。下面用代码举个例子。
class student{
int age;
String name;
}
以上代码定义了一个学生类,这个类的属性有年龄有名字。它是抽象的,并不代表任何一个具体的人。
student s1 = new student();
s1.age = 20;
s1.name = "张三";
以上代码用学生类实例化出一个叫“张三”的年龄20的s1对象。
三、类的封装
封装是指隐藏对象的属性和实现细节,仅对外提供公共的访问方式。举个简单的例子,比如说电磁炉的使用,我们只需要放入东西后定好时间按下开关就可以使电磁炉进行工作了,我们完全不需要明白电磁炉的工作原理,不需要关心电磁炉的内部运行细节。封装也是一样,大大的简化了我们的操作。
以上面的类为例子,封装一下就如下代码所示:
class student {
private int age;
private String name;
public int getAge() {
return age;
}
public void setAge(int age) {
if (age > 0) {
this.age = age;
} else {
System.out.println("输入的年龄不能低于0");
}
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
加上private之后就不能直接对其赋值了,需要调用set方法和get方法来赋值。以下代码将演示如何使用封装好的类。
student s1= new student();
s1.setAge(-1);
s1.setName("张三");
由于在setAge方法中使用了if判断年龄是否大于0,所以输出-1时控制台会提示"输入的年龄不能低于0"。封装的好处不仅仅是对输入的值进行判断,可以
将变化隔离,
便于使用。
提高重用性。
调高安全性等,这里就不举例说明了。
四、构造函数
构造函数是一种特殊的函数,有如下几种特点:
1、.构造函数的命名必须和类名完全相同,而且不能拥有返回值,甚至不能用void来修饰,普通函数可以和构造函数同名,但是必须带有返回值
2、 构造函数的功能主要用于在类的对象创建时定义初始化的状态。
3、 构造函数不能被直接调用,你在实例化对象的时候会自动调用。
以上面的类为例,下面用代码演示下构造函数:
class student {
private int age;
private String name;
public student(int age,String name) {
this.age = age;
this.name = name;
}
}
public class Test {
public static void main(String[] args) {
student s1= new student(20,"张三");
}
}
其中student s1= new student(20,"张三")在实例化student类的时候便自动调用了构造函数为成员变量赋值,其中this关键字接下来会讲到,这里先跳过。
五、this关键字
上面代码其实已经演示了this的用途,在上面的代码中this用于区分构造函数的入参以及类中的成员变量。具体来说就是
this
代表它所在函数所属对象的引用,上面代码中的this.age就相当于student.age。