Java系列笔记二——类和对象

方法

将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集

方法的定义

格式

修饰符 返回值 方法名(方法参数){
	方法体
}

可以没有参数
范例

//无返回值,打印a+b的结果
public void add(int a,int b){
	System.out.println(a+b);
}

//有返回值,完成a和b的加法,并将a+b返回
public int add(int a,int b){
	return a+b;
}

显而易见,无返回值(void)方法中没有出现return语句,换句话说,return语句的功能就是返回方法的返回值

方法的调用

  • 无返回值方法调用
//add(a,b)
add(43,23);

将会实现打印66的功能

  • 有返回值方法调用
//add(a,b)
int sum = add(43,23);

sum用于接收add的返回值,即a+b的结果,此时sum=66

注意事项:

  • 方法不能嵌套定义
  • void表示无返回值,可以省略return,也可以单独的书写return,后面不加数据

方法重载

方法重载指同一个类中定义的多个方法之间的关系,满足下列条件的多个方法相互构成重载

  • 多个方法在同一个类中
  • 多个方法具有相同的方法名
  • 多个方法的参数不相同,类型不同或者数量不同

注意:重载仅针对同一个类中方法的名称与参数进行识别,与返回值无关,换句话说不能通过返回值来判断两个方法是否相互构成重载

类和对象

  • 面向对象编程
    面向具体的对象进行操作

  • 现实生活中一类具有共同属性行为的事物的抽象
  • 对象
    客观存在的事物都可以看作对象
  • 属性
    对象具有的各种特征,每个对象的每个属性都拥有特定的
  • 行为
    对象能够执行的操作

(1)类是对象的数据类型
(2)类是具有相同属性行为的一组对象的集合
(3)类是对象的抽象,对象是类的实体

类的定义

  • 格式
修饰符 class 类名{
	属性
	行为
}

范例

public class Person{
	//属性
	String name;
	int age;
	
	//行为
	public void setName(String name){
		this.name = name;
	}
	
	public void setAge(int age){
		this.age = age;
	}

	public String getName(){
		return this.name;
	}
	public int getAge(){
		return this.age;
	}
}

对象的创建

格式

类名 实例名 = new 类名(根据需要传参数);

范例

Person p1 = new Person();

对象的使用

范例

//设置对象p1的属性
p1.setName("小李");
p1.setAge(19);

//获取对象p1的属性
int person_name = p1.getname();
int person_age = p1.getAge();

成员变量和局部变量的区别

区别

成员变量

局部变量

类中位置不同

类中方法外

方法内或者方法声明上

内存中位置不同

堆内存

栈内存

生命周期不同

随着对象的存在而存在,随着对象的消失而消失

随着方法的调用而存在,随着方法的调用完毕而消失

初始化值不同

有默认的初始化值

没有默认的初始化值,必须先定义,赋值,才能使用

部分关键值解释

private关键字

  • 是一个权限修饰符
  • 可以修饰成员(成员变量和成员方法)
  • 作用是保护成员不被别的类使用,被private修饰的成员只能在本类中才能被访问

针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作

  • 提供“get变量名()"方法,用于获取成员变量的值,方法用public修饰
  • 提供"set变量名(参数)"方法,用于设置成员变量的值,方法用public来修饰

private关键字的使用

一个标准类的编写:

  • 把成员变量用private修饰
  • 提供对应的getXxx()、setXxx()方法

this关键字

  • this修饰的变量用于指代成员变量
  • 方法的形参如果与成员变量同名,不带this修饰的变量指的是形参,而不是成员变量
  • 方法的形参没有与成员变量同名,不带this修饰的变量指的是成员变量
  • 什么时候使用this:
    解决局部变量隐藏成员变量
  • this:代表所在类的对象引用
  • 记住:方法被哪个对象调用,this就代表哪个对象

封装

  1. 封装概述
    是面向对象三大特征之一(封装,继承,多态)
    是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的外界是无法直接操作的
  2. 封装原则
    将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问
    成员变量private,提供对应的**getXxx()/setXxx()**方法
  3. 封装好处
    通过方法来控制成员变量的操作,提高了代码的安全性
    把代码用方法进行封装,提高了代码的复用性

构造方法

构造方法是一种特殊的方法。

  • 作用:创建对象
  • 格式:
public class 类名{
	修饰符 类名(参数){
	}
}
  • 功能:
    主要是完成对象数据的初始化

修饰符一般是public

  • 注意事项
  • 构造方法的创建
  • 如果没有定义构造方法,系统将给出一个默认无参数的构造方法
  • 如果定义了构造方法,系统将不再提供默认的构造方法
  • 构造方法的重载
  • 如果自定义了带参构造方法,还要使用无参数构造方法,就必须再写一个无参数构造方法
  • 推荐的使用方式
  • 无论是否使用,都手工书写无参数构造方法

标准类的制作

  • 成员变量
  • 使用private修饰
  • 构造方法
  • 提供一个无参构造方法
  • 提供一个带多个参数的构造方法
  • 成员方法
  • 提供每一个成员变量对应的setXxx()/getXxx()
  • 提供一个显示对象信息的show()
  • 创建对象并为其成员变量赋值的两种方式
  • 无参构造方法创建对象后使用setXxx()赋值
  • 使用带参构造方法直接创建带有属性的对象。

可以alt+insert直接生成