Java中的类和对象

Java中的类和对象

Java中的类 其实对应 面向对象 中的 “对象” class 定义的东西
Java中的对象 对应面向对象中 那个具体事物。 是 new 类 出来的东西。

1.Java中的属性和方法

面向对象中主要关心对象具备什么样的功能。细分两部分:

  1. 特征:用于描述对象(颜色、品牌…)
    变量来描述
  2. 行为: 能做什么(跑,放音乐,拉货…)
    方法来描述

2.类的定义

class 类名{
	数据类型 变量名;  //描述特征
	
	修饰符 返回值类型 方法名(参数类型 参数名,.....){
	}   //描述行为
}

3.对象的创建

对象是根据类创建出来的具体的事物。
也就是说,类中定义的哪些特征 和 行为,必须依赖于具体的对象才有意义。
创建对象的目的,是为了访问它的特征和行为。

格式:

类名 变量名 = new 类名();

//类名本质上是数据类型
数据类型 变量名 = new 数据类型();    //引用类型是通过new来创建的。

//回忆一下
Scanner scanner = new Scanner(System.in);
Random rnd = new Random();

对象值的获取和方法调用:

对象名.成员变量名;     //拿到变量:可以获取值、设置值。
对象名.方法调用();    //方法的调用。

4.调用过程中局部变量和成员变量

区别:

  1. 定义的位置不同
  • 局部变量 定义在 参数列表或者方法体内部
  • 成员变量 定义在类中 方法外
  1. 在内存中所处的位置不同
  • 局部变量 存放在 栈内存中(随方法入栈)
  • 成员变量 存放在 堆内存中
  1. 初始化不同
  • 局部变量没有默认值,使用前必须进行初始化(赋值)
  • 成员变量有默认值,可以直接使用。(堆内存中的数据都有默认值)
  1. 生命周期不同
  • 局部变量在方法执行完毕以后就从内存中销毁了
  • 成员变量是随着对应的对象被JVM的垃圾回收器回收以后,才会真正从内存中销毁

5.匿名对象

匿名对象就是没有名字的对象(也就是new完之后,没有赋值给任何变量)。
适用场合:

  1. 只用一次的时候。
    通过对象访问它的特征或行为(例如调用一个类的排序方法,无返回值)
    在这里插入图片描述
  2. 作为参数传递的时候 ,(例如定义了一个需要传递参数的方法,而匿名对象返回值能够满足方法参数的要求,此时可以调用匿名对象)
    在这里插入图片描述

6.封装

核心是为了隐藏对象(类)的特征和实现细节。仅仅将需要对外提供的内容暴露出来
[封装]

private 数据类型 变量名

体现在Java代码中,就是将所有的成员变量隐藏起来(新的关键字 private )。如果这个变量需要对
外访问,也只是提供方法(一般标记为 public )来让外界访问。

Java中的类和对象_第1张图片
公开的访问成员变量的方法名(get、set方法)
方法名+变量首字母大写
以 private int age 成员变量为例;
对应的getter 方法(获取字段值):

public int getAge (){
return age;
}
对应的setter方法(设置字段值):
public void setAge (int a){
age = a;
}

对于boolean类型的成员变量来说,它的getter方法是以 is 开头的。

7.this关键字

主要用在 局部变量 和 成员变量同名的时候。用于区分成员变量。
Java中的类和对象_第2张图片

8.构造方法

构造方法是 一种特殊的方法,它的特殊性在于没有返回值,且要求方法名必须跟 类名一致
构造方法用于实现对象的创建工作。也就是说 new 后面跟的其实是一个构造方法。

new 类名() 这种创建对象的语法,其实本质上讲,是调用了 类 的一个 无参的构造方法

定义格式:

修饰符 类名(参数类型 参数名,....){
	//注意:这里不能返回任何值。但是可以按需写 return;
}

注意事项

  • 当一个类没有显式定义任何构造方法时,Java会自动提供一个默认的 公共无参的构造方法
  • 一旦一个类中明确定义了任何一个方法时,Java就不会自动提供了。
  • 构造方法也可以进行重载( over load )
    • 只考虑方法名 和 参数(个数、类型)
    • this 关键字又起作用了
    • this(),可以调用自己的构造方法,()中传入对应构造方法的参数个数或者类型,顺序颠倒也算不同的构造方法或者重载方法

有些场景下,我们会选择将构造方法的修饰符设置为 private

  1. 单例模式:Java中的类和对象_第3张图片
  2. 工具类
    Java中的类和对象_第4张图片

9. 定义一个类的标准格式

class 类名{
	private 数据类型 变量名;
	//.....
	
	public 类名(参数列表...){
	} 
	//....
	
	//getter、setter
		//alt + insert
	
	//成员方法
	public 返回值类型 方法名(参数列表...){
	}
	 //....
	 
	/*
	1. 局部变量和成员变量同名的时候必须使用
	2. 当构造方法重载时,可以利用 this() 复用代码
	*/
}

你可能感兴趣的:(#,java基础)