一、封装
-
什么是封装?
-
特点:看不到内部结构,提供外部访问方式
-
-
封装场景
-
应用场景
-
方法就是一个最基本的封装体。
-
类其实也是一个封装体。
-
-
封装优点
-
提高了代码的复用性
-
隐藏了实现细节,还要对外提供可以访问的方式
-
提高了安全性
-
便于调用者使用。这是核心之一,也可以理解为就是封装的概念
-
-
-
关键字
-
private概述
-
在Java中表示私有,所修饰的内容,只能在本类中访问
-
class person { private int Id; private String name; } //只要将Person的属性和行为私有起来,这样就无法直接访问。
只能内部类访问自己,外部没法访问, private(私有,权限修饰符)
-
如何解决无法访问的问题
-
public class Demo { public static void main(String[] args) { student stu = new student(); stu.m(); } }
package 封装私有; public class student { private int age ; private String name; public int m() { return age; } }
-
曲线救国(调用方法,用它内部方法去调用他内部私有数据)
-
代码操作
-
package 曲线救国02.取值操作01; public class Demo { public static void main(String[] args) { Student student = new Student(); int a = student.m(); System.out.println(a); } //赋值取值 }
-
赋值取值
-
package 曲线救国02.赋值操作02; public class Demo { public static void main(String[] args) { Student student = new Student(); int a = student.m(); System.out.println(a); //赋值 student.m2(100); //测试 System.out.println(student.m()); } }
-
package 曲线救国02.赋值操作02; public class Student { private int age; //取值操作 public int m(){ return age; } //需求:赋值 public void m2(int a){ age = a; } }
-
set和get方法
-
为了遵循Java见名思意的命名规则,故此提出了set和get方法
-
get
-
格式:getXxx------(Xxx变量名)
-
public class Student { private int age=100; //为了遵循见名思意原则,我们以后取值的操作不能随便起名 //getXxx------(Xxx变量名) public int getAge(){ return age; } }
-
set
-
格式:setXxx (Xxx:变量)
-
public class Student { private int age; //取值操作 public int getAge(){ return age; } //需求:赋值 //setXxx (Xxx:变量) public void setAge(int a){ age = a; } }
二、this方法
-
什么是this?
-
前奏:Java为什么要预留this关键字?
-
因为要区分成员变量和局部变量
-
package this关键字04; public class A { private int x;//成员变量 //见名思意命名规则 public void setX(int x){//局部变量 就近原则 System.out.println("x赋值前:"+x); this.x= x; System.out.println("x赋值后:"+x); } public void getX(){ System.out.println(x); } } package this关键字04; public class Demo { public static void main(String[] args) { A a = new A(); a.setX(100); a.getX(); } }
-
成员变量和局部变量同名问题
-
-
可以在成员变量名前面加上this.来区别成员变量和局部变量
-
-
this的应用
-
学习this的用法之后,现在做个小小的练习。
-
需求:在Person类中定义功能,判断两个人是否是同龄人
-
package this练习05; public class Person { private int age; private String name; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } //方法 public boolean bj(int age){ return this.age > age ? true : false; } } package this练习05; public class Demo { public static void main(String[] args) { Person person = new Person();//0x0011 person.setAge(18); Person p2 = new Person();//0x0022 p2.setAge(20); boolean f = person.bj(p2.getAge()); System.out.println(f); } }