前言
我们之前学的都是面向过程,面向过程研究的是对单个对象的一种方法实现过程,比如求一个数的阶乘,强调的是怎么实现这个方法的过程,但对我们以后来说,如果想要应用到更广的层面,不能只是学习一个方法的过程,而是通过用对象的方法与其他对象建立联系来实现一个项目,那么怎么让对象与对象建立联系呢?我们就需要学习面向对象的相关知识。
1. 面向对象的初步认知
1.1 什么是面向对象
Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。用面向对象的思想来涉及程序,更符合人们对事物的认知,对于大型程序的设计、扩展以及维护都非常友好。
1.2 面向对象与面向过程
1.传统的洗碗过程
传统的方式:注重的是洗碗的过程,少了一个环节可能都不行,按照该种方式来写代码,将来扩展或者维护起来会比较麻烦。
2. 现代洗碗过程
总共四个对象:人 碗 洗洁精 洗碗机
整个过程就人打开洗碗机,把碗放到洗碗机,放洗洁精,关上洗碗机,洗碗机自己把碗洗完然后烘干。
整个过程就人,碗,洗洁精,洗碗机这四个对象相互完成,不需要管洗碗机是怎么把碗洗干净的,怎么烘干的。
以面向对象方式来进行处理,就不关注洗碗的过程,具体洗碗机是怎么来洗碗,如何来烘干的,用户不用去关
心,只需要将碗放进洗碗机,倒入洗洁精,启动开关即可,通过对象之间的交互来完成的。
注意:面向过程和面相对象并不是一门语言,而是解决问题的方法,没有那个好坏之分,都有其专门的应用场景。
2. 类定义和使用
2.1 简单认识类``
就我而言,类是指描述一个物品的大致摸样,是一个比较抽象的东西,类是不实的,也可以说是一个抽象的概念。
百度百科:java类就是具备某些共同特征的实体的集合,他是一种抽象的数据类型,它是对所具有相同特征的抽象。在面向对象的程序设计语言中,类是对一类“事物”的属性与行为的抽象。
那么在java中怎么去定义一个类?
2.2 类的定义格式
在java中定义类时需要用到class关键字,具体语法如下:
class Dog{
//成员变量 属性 字段
public String name;
public int age;
public String colour;
//成员方法
public void eat() {
System.out.println("正在吃..........");
}
public void barks() {
System.out.println(name + ": 旺旺旺~~~");
}
}
class为定义类的关键字,Dog为类的名字,{}中为类的主体。
类中包含的内容称为类的成员。属性主要是用来描述类的,称之为类的成员属性或者类成员变量。方法主要说明类具有哪些功能,称为类的成员方法。
注意事项:
类名注意采用大驼峰定义
成员前写法统一为public,后面会详细解释
此处写的方法不带 static 关键字. 后面会详细解释
3. 类的实例化
3.1 什么是实例化
定义了一个类,就相当于在计算机中定义了一种新的类型,与int,double类似,只不过int和double是java语言自带的内置类型,而类是用户自定义了一个新的类型,比如上述的:PetDog类和Student类。它们都是类(一种新定义的类型)有了这些自定义的类型之后,就可以使用这些类来定义实例(或者称为对象)。
用类类型创建对象的过程,称为类的实例化,在java中采用new关键字,配合类名来实例化对象。
用代码实现在狗类中实例化一个狗的对象:
class Dog {
//成员变量 属性 字段
String name;
int age;
String colour;
//成员方法
public void eat() {
System.out.println(name+"正在吃............");
}
public void barks() {
System.out.println(name+"正在汪汪汪.........");
}
public void wag() {
System.out.println(name+"正在摇尾巴.........");
}
}
public class Test {
public static void main(String[] args) {
Dog dog = new Dog();
dog.name = "旺财";
dog.age = 2;
dog.colour = "黑色";
dog.wag();
dog.eat();
dog.barks();
}
}
在main方法中创建一个dog对象,通过dog.成员方法去访问Dog类中的成员方法,运行出来的结果:
类中的成员变量是存储子在堆的实例化空间,每一个对象都有一个私有的实例化变量空间。当对象被创建时,它的实例化变量就会被初始化