java基础之面向对象的封装性、构造方法及参数传递

本文介绍了Java中的面向对象封装性,包括封装的好处和实现步骤,详细讲解了构造方法的定义、作用及实例变量的初始化。此外,还探讨了对象、引用的概念以及参数传递的原理。
摘要由CSDN通过智能技术生成

下一篇持续更新中… 如有错误欢迎指正!!!

1. 面向对象的封装性

1.1 封装的好处

面向对象包括三大特征:

  • 封装
  • 继承
  • 多态

当前主要讲解的是封装机制。为什么要封装,封装有什么好处?

  1. 封装之后对于那个事物来说,看不到这个事物比较复杂的那一面,只能看到该事物简单的那一面。复杂性封装,对外提供简单的操作入口。照相机就是一个很好的封装的案例,照相机的实现原理非常复杂,但是对于使用照相机的人来说,操作起来是非常方便的,是非常便捷的。像电视机也是封装的,电视机内存实现非常复杂,但是对于使用者来说,不需要关心内部的实现原理,只需要会操作遥控器就行。
  2. 封装之后。才会形成真正的对象。真正的独立体。
  3. 封装就意味着以后的程序可以重复使用,并且这个事物应该适应性比较强,在任何场合都可以使用
  4. 封装之后,对于事物本身提高了安全性。【安全级别高】
package com.sypowermode.javase.day09.test001;
/**
 * 用户类
 */
public class User {
   
		//年龄
		int age;
}
package com.sypowermode.javase.day09.test001;

public class UserTest {
   

	/**
	 * 用户测试类
	 * 
	 * 对于当前程序来说,User中的age属性在外部程序中可以随意访问,
	 * 导致age属性的不安全 一个user对象表示一个用户,用户的年龄不可能为负数
	 * 以下程序当中年龄值为负数,程序运行的时候并没有报错。 这是当前程序存在的缺陷
	 */
	public static void main(String[] args) {
   

		// 创建User对象
		User user = new User();

		// 访问age
		// 读取年龄值【get】
		System.out.println("该用户年龄:" + user.age);

		// 修改年龄值
		user.age = 20;

		// 读取年龄值【get】
		System.out.println("该用户年龄:" + user.age);

		// 修改年龄值
		// 这里的age属性显然是完全暴露给外部程序的。对于程序员来说,可以操作user对象当中所有的细节,导致user中部分数据不安全。
		// 不建议这样,建议user类型进行封装,建议在外部程序中不能随意访问user对象当中的属性。这样可以保证属性的安全。
		user.age = -100;

		// 读取年龄值【get】
		System.out.println("该用户年龄:" + user.age);
	}
}

1.2 封装的步骤:

  1. 所有属性私有化,使用private关键字进行修饰。private表示私有的,修饰的所有数据只能在本类中访问。

  2. 对外提供简单的操作入口。也就是说,以后外部程序要想访问age属性,必须通过这些简单的入口进行访问:

回想一下,一个属性通常访问的时候包括几种访问形式?
- 第一种方式:想读取这个数据的值,读取 get
- 第二种方式:想修改这个属性的值,修改 set

  • 对外提供两个公开的方法,分别是set方法和get方法
  • 想修改age属性,调用set方法
  • 想读取age属性,调用get方法

需要大家先背会以下内容,以后会讲:
- setter 和 getter 方法没有static关键字
- 有static关键字修饰的方法怎么调用:类名.方法名(实参);
- 没有static关键字修饰的方法怎么调用:引用.方法名(实参);

  1. set方法的命名规范:
  			public void set+属性名首字母大写(形参){
   
  }
  
  			public void setAge(int a){
   
  				age = a;
  1. get方法的命名规范:
  			public int getAge(){
   
  				return age;
  }
  1. 如何通过代码体现?
public class User {
   

	// 属性,私有化
	private int age;

	// set方法没有返回值,因为set方法只负责修改数据
	/*
	 * public void setAge(int age){ age =
	 * age;//java有就近原则,这里其实并没有给age属性赋值,这里的age都是局部变量age }
	 */

	// setter
	public void setAge(int a) {
   
		// 编写业务逻辑代码,进行安全控制
		// age = a;

		if (a < 0 || a > 150) {
   
			
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值