前言
Hello,大家好!很开心与你们在这里相遇,我是一个喜欢文字、喜欢有趣的灵魂、喜欢探索一切有趣事物的女孩,想与你们共同学习、探索关于IT的相关知识,希望我们可以一路陪伴~
1. 封装
- 什么是封装
面向对象编程语言是对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改。 封装可以被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问。要访问该类的数据,必须通过指定的 方式。适当的封装可以让代码更容易理解与维护,也加强了代码的安全性。
- 封装的原则
将属性隐藏起来,若需要访问某个属性,提供公共方法对其访问。
- 如何封装
使用 private 关键字来修饰成员变量。
对需要访问的成员变量,提供公共对应的一对
getXxx
方法 、setXxx
方法。
private 关键字
- 什么是private关键字
1. private是一个权限修饰符,代表最小权限。
2. 可以修饰成员变量和成员方法。
3. 被private修饰后的成员变量和成员方法,只在本类中才能访问。
- private的使用格式
private 数据类型 变量名 ;
- 使用 private 修饰成员变量,代码如下:
public class Student {
//private修饰成员变量
private int num = 10;
public void show(){
//private 只能在本类中使用
System.out.println(num);
}
//private修饰成员
private void method(){
System.out.println("我是method");
}
public void function(){
//private 只能在本类中使用
method();
}
}
public class StudentTest {
public static void main(String[] args) {
Student s = new Student();
//不能访问私有的成员变量
// System.out.println(s.num);
s.show();
//不能访问私有的成员方法
// s.method();
s.function();
}
}
- 提供
getXxx
方法 /setXxx
方法,可以访问成员变量,代码如下
public class Student {
//姓名
private String name;
//年龄
private int age;
//姓名获取值
public String getName(){
return name;
}
//姓名设置值
public void setName(String n){
name = n;
}
//年龄获取值
public int getAge(){
return age;
}
//年龄设置值
public void setAge(int a){
age = a;
}
}
public class StudentDemo {
public static void main(String[] args) {
//创建对象
Student s = new Student();
//使用成员变量
//错误: 私有的成员变量是不能被访问的
// System.out.println(s.name);
// System.out.println(s.age);
//通过方法访问成员变量
System.out.println(s.getName()+" : "+s.getAge());
//给成员变量赋值
s.setName("一燕");
s.setAge(18);
System.out.println(s.getName()+" : "+s.getAge());
}
}
this关键字
- 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;
}
}
2. 构造方法
- 构造方法概述
构造方法: 用于对象数据初始化。
【注意】:
无论你与否自定义构造方法,所有的类都有构造方法,因为Java自动提供了一个无参数构造方法,一旦自己定义了构造方法,Java自动提供的默认无参数构造方法就会失效。
- 构造方法的定义格式
/*
构造方法名与类名相同
没有返回值类型,连void
没有具体的返回值
*/修饰符 构造方法名(参数列表){
// 方法体
}
- 构造方法的使用
构造方法的写法上,方法名与它所在的类名相同。它没有返回值,所以不需要返回值类型,甚至不需要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 StudentDemo {
public static void main(String[] args) {
//无参构造
Student s = new Student();
System.out.println(s);
//有参构造
Student s1 = new Student("小燕",27);
System.out.println(s1.getName());
System.out.println(s1.getAge());
}
}
- 构造方法--重载
// 构造方法是可以重载
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;
}
}
- 构造方法注意事项:
1. 如果你不提供构造方法,系统会给出无参数构造方法。
2. 如果你提供了构造方法,系统将不再提供无参数构造方法。
3. 构造方法是可以重载的,既可以定义参数,也可以不定义参数。
3. 标准JavaBean编写
JavaBean 是 Java语言编写类的一种标准规范。
符合 JavaBean 的类,有构造方法 , 提供操作属性的set get方法。
示例:
public class ClassName{
//成员变量
//构造方法
//无参构造方法【必须】
//有参构造方法【建议】
//成员方法
//getXxx()
//setXxx()
}
- 编写Studet类:
public class Student {
//成员变量
private String name;
private int age;
//构造方法
public Student() {}
public Student(String name,int age) {
this.name = name;
this.age = age;
}
//成员方法
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
publicvoid setAge(int age) {
this.age = age;
}
publicint getAge() {
return age;
}
}
测试:
public class TestStudent {
public static void main(String[] args) {
//无参构造使用
Student s= new Student();
s.setName("大大");
s.setAge(18);
System.out.println(s.getName()+"‐‐‐"+s.getAge());
//带参构造使用
Student s2= new Student("花花",22);
System.out.println(s2.getName()+"‐‐‐"+s2.getAge()); }
}
人生不过三万天,就去做自己喜欢的事叭~ 希望今天的你也开心~