java语法基础6——面向对象(封装)

封装

面向过程与面向对象

  1. 面向过程:一种较早的编程思想,顾名思义该思想就是站在过程的角度思考问题,强调的是我该怎么去做。面向过程的设计思想,系统软件适应性差,可拓展性差,维护性低。

  2. 面向对象:一种基于面向过程的新的编程思想,顾名思义该思想是站在对象的角度思考问题,我们把多个功能合理的放到不同对象里,强调的是我该让谁来做。面向对象最小的程序单元是类,必须先存在类的定义,再有对象,而具备某种功能的实体,称为对象。面向对象更符合我们常规的思维方法,稳定性好,可重用性强,易于开发大型软件产品,有良好的可维护性。面向对象的三大特征:封装、继承、多态。

变量

成员变量:直接定义在类中、方法外面的变量是成员变量,也叫字段
  1. 初始值:成员变量不初始化也是有初始值的,根据定义的数据类型决定默认初始值
  2. 作用域:在当前类中都有效,可以随意使用
  3. 生命周期:随对象在堆空间创建而产生,同时跟随对象销毁而销毁
局部变量:除了成员变量,其他的都是局部变量
  1. 初始值:局部变量没有默认初始值,只有初始化之后才能使用
  2. 作用域:在当前花括号类有效,出了当前花括号则无法使用
  3. 生命周期:随方法在栈空间创建栈帧时而产生,同时随方法调用完销毁而销毁
// 变量
public class Student {
	private String name;		// 成员变量,可以在当前类中任何地方使用

	public void setName(String n) { // n是局部变量,只能在当前方法的花括号中使用,出了范围将无法使用
		name = n;		// 成员变量在当前类的方法中被使用
	}

	public String getName() {
		return name;	// 成员变量在当前类的方法中被使用
	}

	public void speak(String language) {	// language是局部变量,只能在当前方法的花括号中使用
		System.out.println("我会说" + language);
	}
}

类和对象

  1. 类:类是拥有相同特性(状态)和行为(功能)的多个对象的抽象。通俗的说就是把一些事物抽象出来一个朦胧的模型,提取这些事物的共同特征,可以用这个模型代表这些事物。
    注:使用成员变量来表示状态;使用成员方法来表示行为。
  2. 对象:对象是类实例化的体现,是根据类的特征具体成一个有模有样的实体(实例)。
  3. 对象实例化过程内存分析: 使用无参构造器创建对象,在堆区分配内存,用类名声明的变量在栈中分配内存,通过地址和对象引用联系起来,使用setter方法改变成员变量的值,用类声明的变量也能获取到改变后的成员变量,类中的方法就在栈中调用,用完就会断开连接,被GC回收.
    在这里插入图片描述
// 类
/*
	1. 成员变量的方法都不能使用static修饰,修饰符是可选的,也可以不写
	2. 在对象设计中。描述对象的类和测试类分开编写
	3. 在描述对象的类中不需要定义main方法,专门在测试类中提供main方法	
*/
public class 类名 {
	// 可以编写多个成员变量
	[修饰符] 数据类型 变量名;

	// 可以编写多个成员方法
	[修饰符] 返回类型 方法名(参数表) {
		方法体;
	}
}


// 对象
/*
	对象创建语法:	1. 跟变量定义相似,类是引用数据类型
					2. new一个对象(实质是构造器构造一个对象)
*/
public static void main(String[] args) {
	类名 对象名 = new 类名();
}

构造器

// 构造器(构造方法)
/*
	1. 构造器(构造方法)与类同名,无返回类型
	2. 构造器是用来创建对象的,如果类中没有自己手动添加的构造器,那么会默认提供一个无参数的的构造器,
	   创建对象时不会给成员变量赋值
	4. 构造器可以有多个(方法重载),只要参数表不同即可,有参构造器可以在创建对象的同时给成员变量赋值,
	   但是存在自己添加的构造器时默认提供的无参构造器会消失
*/
[修饰符] 类名() {

}

封装思想

  1. 含义: 把对象的字段和方法存放在一个独立的模块中(类),把信息隐藏,尽可能隐藏对象的数据和功能实现细节.

  2. 好处: 保证数据的安全性,防止调用者随意更改数据,提高组件的重用性,把公用功能放到一个类中,谁需要该功能,直接调用即可.

  3. 访问权限:
    在这里插入图片描述
    private: 表示当前类私有,类访问权限,只能在本类中操作,离开本类之后就不能访问直接访问

    无(不写,缺省): 表示当前包私有,包访问权限,定义和调用只能在同一个包中才能访问

    protected: 表示子类访问权限,同包中的可以访问,即使不同包但是有继承关系也可以访问

    public : 表示公共的,可以在当前项目中的任何地方访问

JavaBean规范

JavaBean是一种某些符合条件的特殊类,必须遵循一定的规范:
  1. 类必须使用public修饰
  2. 必须保证有公共无参数构造器 ,即使手动提供了带参数的构造器,也得手动提供无参数构造器
  3. 字段必须使用private修饰,每个字段提供一对getter和setter方法
// JavaBean规范
public class Student {		// 类用public修饰
	// 成员变量私有化(private修饰)
	private String name;

	// 无参构造器
	public Student() {
		
	}

	// 带参数的构造器
	public Student(String name) {	// 有参构造器,创建对象同时给成员变量赋值
		this.name = name;		// this关键字指向成员变量,解决成员变量与局部变量同名的二义性
	}

	// 成员变量的setter方法
	public void setName(String name) {
		this.name = name;	// setter方法是用来给成员变量赋值的,通过对象调用可以多次赋值
	}

	// 成员变量的getter方法
	public String getName() {
		return name;	// getter方法是用来获取成员变量的值的
	}
	
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值