在java和C的区别主要就是面向对象和面向过程的语言的区别,这里我们来讲一下类和对象
目录
1.什么是面向对象
2.类
3.this
3.1this是什么?
3.2this的使用方法
4.构造方法
1.什么是面向对象
就好比我要洗衣服,那么面向过程的时候,就相当于我们传统的用手搓衣服,每一个过程都需要我自己去执行,而面向对象就是我买了一个洗衣机,我只需要把我的衣服放到洗衣机里面,剩下的就交给洗衣机来完成,这就是面向对象
2.类
类是什么?类是用来实例化对象,那对象是什么?对象就是我们生活中的实例化,就好比我们上面的我的洗衣机,就是一个对象,然后我们需要一个创造洗衣机的工厂,他们就叫做类
类的定义和使用
类其实相当于一个的自定义的类型(可以暂时理解为C中的结构体)
定义的方法
class WashMachine{
}
这就是定义的一个类
还拿洗衣机作为例子
类里面可以有两个东西
1.字段/属性(成员变量)
public String brand ; // 品牌 public String type ; // 型号 public double weight ; // 重量 public double lenght ; // 长 public double height ; // 高 public String color ; // 颜色 暂时先加上public,到后面继承会讲2.方法/行为(成员方法)
public void WashClothes (){ // 洗衣服 System . out . println ( " 洗衣功能 " ); } public void dryClothes (){ // 脱水 System . out . println ( " 脱水功能 " ); } public void SetTime (){ // 定时 System . out . println ( " 定时功能 " ); } 这一段是洗衣机的功能,我们一个抽象出来一个叫洗衣机的类了注意事项:
1. 一般一个文件当中只定义一个类 2. main 方法所在的类一般要使用 public 修饰 ( 注意: Eclipse 默认会在 public 修饰的类中找 main 方法 ) 3. public 修饰的类必须要和文件名相同 4. 不要轻易去修改 public 修饰的类的名称,如果要修改,要通过开发工具修改修改可以用开发工具来进行修改
由类产生对象的过程,叫做实例化对象
假如是上面的类,我们可以用来实例化一个洗衣机对象
WashMachine w ashMachine = new WashMachine (); 这样就实例化出来一个w ashMachine 的对象了 相当于 w ashMachine存了new出来这个对象的地址,因为dog变量是放在栈上的,而对象是放在堆上的,而对象中放的就是我上面创建类的时候,里面的成员变量 w ashMachine. brand就可以直接访问到成员变量washMachine.dryClothes方法和成员变量都是用对象的引用.
注意:方法不是放到堆里面去的,方法的调用是开辟栈帧的
通过一个类可以实例化多个对象
总结一下:类其实就相当于是盖房子的图纸,可以盖跟多很多款型一样房子,图纸就是类,房子就是实例化的对象
3.this
3.1this是什么?
this简单来说就是当前对象的引用,就可以理解为我用animal类实例化了一个对象叫cat,那我们在animal中的方法里面用this其实就相当于cat
3.2this的使用方法
方法的形参和成员变量名字想同时
这里我们就可以用this来修改成员变量中的值,如果不在前面加上this的话,我们访问的时形参中的name和age因为局部优先
这里可以用this的原因就是this时当前对象的引用,所以我们可以认为哪里时cat.name,这样就能解释为什么this可以更改成员变量的值了
注意:this只能在成员方法中使用,而且this引用了一个对象之后就不能再引用另外一个对象了
4.构造方法
构造方法的方法名必须和类名相同才可以,而且,构造方法不需要参数
如下就是一个构造方法
在我们调用方法之前,我们的编译器会先执行我们的构造方法,但是如果我们不写构造方法,编译器会自动提供一个构造方法,如果我们写了构造方法,那么编译器不再提供构造方法也是可以有参数的,并且可以对成员变量进行初始化操作构造方法的使用如下图s
注意:构造方法再一次实例化对象值调用一次,,并且可以进行重载
这就是一个带参数初始化构造方法,但是我们在进行初始化对象的时候就必须也要传参数进去了,因为我们自己写了一个构造方法,那么编译器便不会再生成无参的构造方法了使用如下
这里,this又可以发挥作用,在构造方法中,可以用this来调用其他的构造方法
这里就是这样,在构造方法中,用this来调用其他的构造方法,可以简化代码
注意:这里的this必须放到第一行,并且不能形参环



