一面向对象的初步认知
1.什么是面向对象
2.面向对象与面向过程
以面向过程方式来进行处理,就关注洗衣服的过程,洗衣机是怎么来洗衣服,如何来甩干的等细节。以面向对象方式来进行处理,就不关注洗衣服的过程,只需要将衣服放进洗衣机,倒入洗衣粉,启动开关即可,通过对象之间的交互来完成的。
二、类定义和使用

上图左侧就是对洗衣机简单的描述,该过程称为对洗衣机对象(实体)进行抽象(对一个复杂事物的重新认知),但是这些简化的抽象结果计算机也不能识别,开发人员可以采用某种面相对象的编程言来进行描述,比如:Java语言。
1.简单认识类
2.类的定义格式
在java中定义类时需要用到class关键字,具体语法如下
// 创建类
class ClassName{
field; // 字段(属性) 或者 成员变量
method; // 行为 或者 成员方法
}
class WashMachine{public String brand; // 品牌public String type; // 型号public double weight; // 重量public double length; // 长public double width; // 宽public double height; // 高public String color; // 颜色public void washClothes(){ // 洗衣服System.out.println("洗衣功能");}public void dryClothes(){ // 脱水System.out.println("脱水功能");}public void setTime(){ // 定时System.out.println("定时功能");}}
3.类的实例化
3.1什么是实例化
在上一章中已经讲了new的作用(这里不详细讲了,本节重点讲构造方法)比如给上面洗衣机类实例化:
WashMachine a =new WashMachine(); 这个语句创建了一个名为a的自定义(这里为洗衣机类)类的类型,我们称为对象(java里面一切都是对象,比如数组类型,整型类型,浮点型类型等),实例化过程中会给他分配内存空间以及初始化(构造方法的作用)。实例化后就可以访问类里面的成员变量和成员方法了(即自定义类里面的变量和方法)
下面定义一个狗类并实例化
class PetDog {public String name;//名字public void barks() {System.out.println(name + ": 旺旺旺~~~");}public void wag() {System.out.println(name + ": 摇尾巴~~~");}}public class Test1{public static void main(String[] args) {PetDog dogh = new PetDog(); //通过new实例化dogh这个对象dogh.name = "阿黄";dogh.barks();dogh.wag();PetDog dogs = new PetDog();//实例化dogs这个对象dogs.name = "赛虎";dogs.barks();dogs.wag();}}输出结果:阿黄: 旺旺旺~~~阿黄: 摇尾巴~~~赛虎: 旺旺旺~~~赛虎: 摇尾巴~~~
4.类和对象的说明
三、this关键字
1.为什么要有this关键字
先看一个日期的类
//第1行public class Date {//2行public int year;//3行public int month;//4行public int day;public void setDay(int y, int m, int d){//5year = y;//6month = m;//7day = d;}public static void main(String[] args) {// 构造三个日期类型的对象 d1 d2Date d1 = new Date();Date d2 = new Date();// 对d1,d2的日期设置//9行 d1.setDay(2020,9,15);//10行 d2.setDay(2023,11,16);
public void setDay(int year, int month, int day){year = year;month = month;day = day;}
2.什么是this
//第1行public class Date {//2行public int year;//3行public int month;//4行public int day;public void setDay(int y, int m, int d){this.year = y; //当d1开始调用时,此代码看成d1.year=y;d2调用时看成d2.year=y;this.month = m; //..............................看成d1.month=m;.....................同上this.day = d; //....................同上................}public static void main(String[] args) {// 构造三个日期类型的对象 d1 d2Date d1 = new Date();Date d2 = new Date();// 对d1,d2的日期设置//9行 d1.setDay(2020,9,15);//10行 d2.setDay(2023,11,16);
public void setDay(int year, int month, int day){year = year; //如果不加this,编译器会认为这两个year都是局部变量(因为你传了一个year过来,将局部变量赋值给自己,编译器会报一个警告)month = month;day = day;}
3.this的特征
四、对象的构造及初始化
1.如何初始化对象
public static void main(String[] args) {int a;System.out.println(a);}// Error:(26, 28) java: 可能尚未初始化变量a
public class Date {public int year;public int month;public int day;public void setDay(int year, int month, int day){this.year = year;this.month = month;this.day = day;}public void printDate(){System.out.println(this.year + "/" + this.month + "/" + this.day);}}public static void main(String[] args) {Date d = new Date();d.printDate(); //因为new作用,默认初始化为0,结果为0/0/0d.setDate(2021,6,9); //给变量赋值d.printDate(); //赋值后结果为 2021/6/9}//屏幕结果//0/0/0
//2021/6/9
2.构造方法
2.1什么是构造方法
public class Date {public int year;public int month;public int day;// 构造方法:// 名字与类名相同,没有返回值类型,设置为void也不行// 一般情况下使用public修饰/