面向对象的基本哲学是认为世界是由各种各样具有自己的运动规律和内部状态的对象所组成的
1-01.面向相对的思想
最常见的有两种编程思想:面向对象和面向过程。
其中,面向过程的思想是指在需要实现一个功能时,每一个具体的步骤都需要程序员亲力亲为,对处理每一个细节做好详细处理;
面向对象的思想是指当需要一个功能时,不需要关心具体的步骤,而是找一个已经具有该功能的“人”来帮你做这件事。
面向对象思想具有三大特性:封装性,继承性,多态性。
1-02.类与对象的关系
类是一组相关属性(事物的状态信息)和行为(事物能做行为)的集合。
类是对一类事物的描述,是抽象的;对象是类的实例,是具体的。
类是对象的模板,对象是类的实例,这两者的关系就好比手机图纸和手机事物的关系。
1-03.类的定义
在Java类中,属性就是成员变量,行为就是成员方法。
成员变量的定义和其他变量定义的格式是基本一样的。当加上public,private等时则会增加或减少对成员变量访问的限制。
成员方法的定义方式和普通的方法的定义方式不一样,它的格式为:
public void 成员方法名(参数表){方法体};
注意:1)成员变量是直接定义在类当中的,在方法的外边。
2)与普通方法的定义相比,成语方法的定义中间少了一个static关键字。
1-04.对象的创建及使用
通常情况下,一个类是不能直接使用的,需要创建一个类对象才能使用。
创建类对象的步骤:
1)导包:指出需要使用的类在什么位置;格式:
import 包名称 类名称;
当需要使用的类和当前类在同一个包时,这一步可以省略不写。
2)创建对象,格式:
类名称 对象名 = new 类名称();
例如:
Student stu = new Student();
2)使用类对象
对成员变量使用时,格式:
对象名.成员变量名;
对成员方法使用时,格式:
对象名.成员方法名(参数);
1-05.使用对象类型做方法的参数和返回值
1)当对象类型做方法的参数,传递到方法当中时,实际上传递进去的是对象的地址值。
2)当对象类型做方法的返回值时,返回值返回的是对象的地址值。
1-06.局部变量与成员变量的区别
1)定义的位置不一样(重点):局部变量定义在方法的内部;
成员变量定义在方法的外部,直接写在类当中。
2)作用范围不一样(重点):局部变量只有方法当中可以使用,出了方法就不能使用;
成员变量在整个类中全都可以使用。
3)默认值不一样(重点):局部变量没有默认值,若想要使用必须手动进行赋值。
成员变量如果没有赋值,会有默认值,规则和数组一样。
4)内存的位置不一样:局部变量位于栈内存;成员变量位于堆内存。
5)生命周期不一样:局部变量随着方法进栈而诞生,随着方法的出栈而消失;成员变量随着对象创建而诞生,随着对象被清楚而消失。
1-06.面向对象的封装性
封装性在Java中的体现:
1)方法就是一种封装;
2)关键字private也是一种封装。
2-01.private关键字的作用及使用
在使用了private关键字后,在本类中依然可以随意访问,但是!超出本类范围的,就不能再直接访问了。
在使用了private关键字后,如果需要对其进行访问,则需要Getter/Setter这样一对方法进行操作。
注意:
1)Getter方法只能有返回值,不能有参数;Setter方法只能有参数,不能有返回值;且必须二者同时配合使用。
2)对于Boolean类型的,Getter方法需要替换成isSame方法,Setter方法不变。
2-02.this关键字的使用
当方法的局部变量和类的成员变量重名时,根据“就近原则“,优先使用局部变量,如果需要访问本类中的成员变量名时,可以使用this进行操作,格式:
this.成员变量名;
2-03.构造方法
构造方法是专门用来创建对象的方法,当通过关键字new来创建对象时,其实就是在调用构造方法。
对构造方法的定义格式如下:
public 类名称 (参数类型 参数名称){方法体}
注意事项:
1)构造方法的名称和所在类的类名称必须完全一致,包括大小写也要一样。
2)构造方法不要写返回值类型,连void都不要写。
3)构造方法不能return一个具体的返回值。
4)如果没有编写任何构造方法,那么编译器会使用默认构造方法,默认构造方法是一个空的构造方法,没有参数,没有方法体。
5)一旦编写了至少一个构造方法,那么编译器的默认构造方法就不会被使用。
6)构造方法也可以重载。
2-04.如何定义一个标准的类
一个标准的类通常需要拥有以下四个部分:
1)所有的成员变量都需要使用private关键字来修饰。
2)为每一个成员变量编写一对Getter/Setter方法。
3)编写一个全参数的构造方法。
4)编写一个无参数的构造方法。
这样的标准类也叫Java Bean。
守着安静的沙漠,等待着花开...