【Java基础篇】第十章 封装

有时候,不是因为你没有能力,也不是因为你缺少勇气,只是因为你付出的努力还太少,所以,成功便不会走向你。而你所需要做的,就是坚定你的梦想,你的目标,你的未来,然后以不达目的誓不罢休的那股劲,去付出你的努力,成功就会慢慢向你靠近。

导读:本篇文章讲解 【Java基础篇】第十章 封装,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

⭐⭐⭐Java基础篇目录⭐⭐⭐


🍁 第一章 Java开发环境搭建
🍁 第二章 标识符与关键字
🍁 第三章 变量
🍁 第四章 数据类型
🍁 第五章 运算符
🍁 第六章 控制语句
🍁 第七章 方法
🍁 第八章 认识面向对象
🍁 第九章 对象的创建和使用
🍁 第十章 封装
🍁 第十一章 this和static
🍁 第十二章 继承
🍁 第十三章 方法的覆盖和多态
🍁 第十四章 super

在这里插入图片描述

1、封装

面向对象的三大特征:封装、继承、多态

有了封装,才有继承,有了继承,才有多态。

封装的作用:

  • 保证内部结构的安全:
    类体中安全级别较高的数据封装起来,外部人员不能随意访问。
  • 屏蔽复杂,暴露简单:
    对代码的调用者来说,不用关心代码内部的复杂实现

在这里插入图片描述

2、如何进行封装

封装的步骤:

  • 属性私有化–private
  • 对外提供简单的操作入口–set和get

在这里插入图片描述

被private关键字修饰的属性,出了本类就不能再被访问,有些因噎废食了。—–我们再开放set和get方法,外部程序只能通过它两来完成属性的访问。

3、实例方法

不被static关键字修饰的方法,称实例方法,是对象级别的方法。

对象又称实例,实例相关的有实例变量、实例方法。实例相关的都要先new对象,然后用引用 . 实例方法/变量去调用,相对的,被static修饰的静态方法的调用则是通过类名. 的方式去调用。

在这里插入图片描述

4、实例方法导致的空指针异常

引用为空的时候,再用引用. 的方式访问实例变量或者实例方法,就会出现空指针异常。

//关于类=属性+方法的再次理解
class User{
	int id;
	public void doSome(){
	}
}
//实例方法,模仿对象的行为动作

在这里插入图片描述

5、set和get方法

属性私有化后,对外提供方法set和get,用于操作对象的属性,既然是操作对象的属性,自然是挂钩对象,即set和get都是实例方法。

get方法的定义规范:

public 返回值类型 get属性名且首字母大写(无参){
	return xxx;
}

set方法的定义规范:

public void set属性名且首字母大写(有一个参数){
	xx属性=参数;
}
 

在这里插入图片描述
举例:
实际开发中,set和get方法、构造方法等都不用手写,IDEA中直接Alt+Insert直接选择就好:
在这里插入图片描述

//简单举例
public class Person {
    private int age;
    //Getter
    public int getAge(){
        return age;
    }
	
	//Getter,这里没用this,后续this再学
    public void setAge(int newAge){
        age=newAge;
    }
public class PersonTest {
    public static void main(String[] args) {
        Person p = new Person();
        //age被私有,不同类中只能用getAge获取
        System.out.println(p.getAge());
        p.setAge(100);
        System.out.println(p.getAge());

    }
}

运行结果:
在这里插入图片描述

这里对setAge()方法的定义有bug,set一个-100给age也可以,对set方法,可修改为:

public void setAge(int age){
	if(age<0 || age>150){
		System.out.println("输入不合法");
		return;
	}
	//能执行到这儿,一定合规,直接赋值就好,不用再else
	this.age=age;
}
		

😉
总结面向对象的特征—封装的两个步骤:

  • 属性私有化
  • 一个属性对外提供set和get方法,外部程序只能通过set方法来修改对象属性。此外可在两个方法中设置If关卡来保证数据的合法性。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/146123.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!