封装和构造方法&成员变量和局部变量
前言
- 掌握 三大特征之封装
- 掌握 this关键字的使用
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、封装
面向对象编程语言是对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改。 封装可以被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问。要访问该类的数据,必须通过指定的 方式。适当的封装可以让代码更容易理解与维护,也加强了代码的安全性。
封装的原则
将属性隐藏起来,若需要访问某个属性,提供公共方法对其访问。
如何封装
使用private关键字来修饰成员变量。
对需要访问的成员变量,提供公共对应的一对get、set方法。
private关键字
- private是一个权限修饰符,代表最小权限。
- 可以修饰成员变量和成员方法。
- 被private修饰后的成员变量和成员方法,只在本类中才能访问
private的使用格式
private 数据类型 变量名;
代码如下(示例):
public class Student {
//private修饰成员变量
private int num = 10;
//private修饰成员
private void method(){
System.out.println("我是method");
}
public void function(){
//private 只能在本类中使用
method();
}
//提供` getXxx` 方法 / `setXxx` 方法,可以访问成员变量
public int getSum(){
return sum;
}
//年龄设置值
public void setSum(int a){
this.sum = a;
}
}
this关键字
在定义成员方法时会使用重复成员变量的名字,此时就很难分辨形参和成员变量了,所以,我们只能使用this关键字,来解决这个重名问题。
this代表所在类的当前对象的引用(地址值),即对象自己的引用。
记住 :方法被哪个对象调用,方法中的this就代表那个对象。即谁在调用,this就代表谁。
this的使用格式
this.成员变量名;
public class Student {
private String name;
private int age;
public void setName(String name) {
//name = name;
this.name = name;
}
public String getName() {
return name;//其实这里隐含this
}
public void setAge(int age) {
//age = age;
this.age = age;
}
public int getAge() {
return age;
}
}
二、构造方法
构造方法: 用于对象数据初始化
无论你与否自定义构造方法,所有的类都有构造方法,因为Java自动提供了一个无参数构造方法, 一旦自己定义了构造方法,Java自动提供的默认无参数构造方法就会失效。
构造方法的定义格式
修饰符 构造方法名(参数列表){
// 方法体
}
构造方法与类名相同
没有返回值类型,连void
没有具体返回值
构造方法的使用
代码如下(示例):
public class Student {
private String name;
private int age;
// 无参数构造方法
public Student() {
System.out.println("我是无参构造方法");
}
// 有参数构造方法
public Student(String name,int age) {
this.name = name;
this.age = age;
}
}
构造方法的重载
构造方法的重载与方法的重载是一致的,只考虑参数列表个数、数据类型、顺序。
public class Student {
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public Student(String name) {
this.name = name;
}
public Student(int age) {
this.age = age;
}
}
构造方法的注意事项
- 如果你不提供构造方法,系统会给出无参数构造方法。
- 如果你提供了构造方法,系统将不再提供无参数构造方法。
- 构造方法是可以重载的,既可以定义参数,也可以不定义参数。
成员变量和局部变量的区别
成员变量 | 局部变量 | |
---|---|---|
类中的位置 | 类中,方法外 | 方法中或者方法声明上(形式参数) |
作用范围 | 类中 | 方法中 |
初始化值 | 有默认值 | 没有默认值,必须先定义,在使用前要初始化 |
内存中的位置 | 堆内存 | 栈内存 |
生命周期 | 随着对象的创建而存在,随着对象的消失而消失 | 随着方法的调用而存在,随着对象的调用完毕而消失 |