一、封装

封装:告诉我们如何正确设计对象的属性和方法

对象代表什么,就得封装对应的数据,并提供数据对应的行为

封装的好处:

  1. 让编程变得很简单,有什么事,找对象,调方法

  2. 降低学习成本,可以少学,少记,或者说压根不用学,不用记对象有哪些方法,有需要时去找就行

二、Private关键字:

  1. 是一个权限修饰符

  2. 可以修饰成员变量(成员变量和成员方法)

  3. 被private修饰的成员只能在本类中才能访问

eg:

package com.itheima.Class;

public class Girlfriend01 {
//属性
private String name;
private int high;
private String gender;
private int age; //针对于每一个私有化的成员变量,都需要提供get和set方法
// set方法:给成员变量赋值
// get方法:在提供成员变量的值
//作用:给成员变量name进行赋值
public void setName(String n) {//变量有参数但是无返回值,需要接收数据,不需要提供结果
name = n;
} public String getName() {//作用:对外提供内的属性,不需要接收数据,需要对外输出结果,需要有返回值
return name;
} // setAge:给成员变量age进行赋值
public void setAge(int a) {//只接收数据,变量有参数,但是没有返回值
if (age >= 16 && age <= 50) {
age = a;
} else {
System.out.println("非法数据");
}
} public int getAge() {
return age;
} public void setHigh(int h) {
high = h;
} public int getHigh() {
return high;
} public void setGender(String g) {
gender = g;
} public String getGender() {
return gender;
} //行为
public void eat() {
System.out.println("她会吃饭");
} public void play() {
System.out.println("她会干活");
}
}
package com.itheima.Class;

public class Girlfriend01Test01 {
public static void main(String[] args) {
Girlfriend01 p1 = new Girlfriend01();//创建一个对象
p1.setName("小诗诗");
p1.setAge(18);
p1.setGender("女");
p1.setHigh(170);
System.out.println(p1.getName());
System.out.println(p1.getAge());
System.out.println(p1.getGender());
System.out.println(p1.getHigh());
p1.eat();
p1.play();
Girlfriend01 p2 = new Girlfriend01();//创建第二个对象
p2.setName("筱筱");
p2.setAge(22);
p2.setGender("男");
p2.setHigh(168);
System.out.println(p2.getName());
System.out.println(p2.getAge());
System.out.println(p2.getGender());
System.out.println(p2.getHigh());
p2.eat();
p2.play();
}
}

运行结果:

小诗诗

18



170

她会吃饭

她会干活

筱筱

22



168

她会吃饭

她会干活

总结:

  1. Private关键字是一个权限修饰符

  2. 可以修饰成员(成员变量和成员方法)

  3. 被private修饰的成员只能在本类中才能访问

  4. 针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作:

    ​ 1、提供”setXxx(参数)“方法,用于给成员变量赋值,方法用public修饰

    ​ 2、提供”getXxx()“方法,用于获取成员变量的值,方法用public修饰

三、this.关键字

成员变量和局部变量:

  1. 成员变量:把定义的变量定义在方法的外面,类的里面叫做成员变量

  2. 局部变量:把变量定义在方法里面叫做局部变量

this的作用:

可以区别成员变量和局部变量,可以直接访问成员变量

就近原则:

当定义的类和方法里面都有相同的变量,对于输出语句而言,成员变量和局部变量哪个变量对输出语句更近,程序就会打印哪个变量对应的值

public class Gilrfirend{
private int age;
public void method(){
int age = 10;
system.out.println(age)
}
}

运行结果:

10

如果我们要打印私有类的age,那么就要使用this.关键字:
public class Gilrfirend{
private int age;
public void method(){
int age = 10;
system.out.println(this.age)
}
}

运行结果:0

eg:

package com.itheima.Test002;

public class Girlfriend01 {
//属性
private String name;
private int high;
private String gender;
private int age; public void setName(String name) {
this.name = name;//直接使用成员变量,不使用局部变量
/*等号右边的name触发就近原则表示局部变量string name,
而string name记录的是主方法里面的setName传递过来的诗诗
局部变量表示测试类中调方法传递过来的数据
*/
//等号的左边表示成员位置的name } public String getName() {
return name;
} public void setAge(int age) {
if (age >= 16 && age <= 50) {
this.age = age;//直接使用成员位置的age
} else {
System.out.println("非法数据");
}
} public int getAge() {
return age;
}
public void setHigh(int high) {
this.high = high;//直接使用成员变量,不使用局部变量
} public int getHigh() {
return high;
} public void setGender(String gender) {
this.gender = gender;//直接使用成员变量,不使用局部变量
} public String getGender() {
return gender;
} //行为
public void eat() {
System.out.println("她会吃饭");
} public void play() {
System.out.println("她会干活");
}
}
package com.itheima.Test002;

import com.itheima.Test001.Girlfriend01;

public class Girlfriend01Test01 {
public static void main(String[] args) {
Girlfriend01 p1 = new Girlfriend01();//创建一个对象
p1.setName("小诗诗");
p1.setAge(18);
p1.setGender("女");
p1.setHigh(170);
System.out.println(p1.getName());
System.out.println(p1.getAge());
System.out.println(p1.getGender());
System.out.println(p1.getHigh());
p1.eat();
p1.play();
com.itheima.Test001.Girlfriend01 p2 = new Girlfriend01();//创建第二个对象
p2.setName("筱筱");
p2.setAge(22);
p2.setGender("男");
p2.setHigh(168);
System.out.println(p2.getName());
System.out.println(p2.getAge());
System.out.println(p2.getGender());
System.out.println(p2.getHigh());
p2.eat();
p2.play();
}
}

运行结果:

小诗诗

18



170

她会吃饭

她会干活

筱筱

22



168

她会吃饭

她会干活

java封装和关键字的更多相关文章

  1. java——封装和关键字

    封装:将类的属性和方法的实现细节隐藏起来的过程 封装的好处:1重用性(代码)2,利于分工3,隐藏细节 访问关键字:public private 默认访问修饰符,protected static关键字 ...

  2. java 封装与this关键字

    一 封装 1.封装的概述 封装,它也是面向对象思想的特征之一.面向对象共有三个特征:封装,继承,多态. 封装表现: 1.方法就是一个最基本封装体. 2.类其实也是一个封装体. 从以上两点得出结论,封装 ...

  3. 094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 04 static关键字(续)

    094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  4. 093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 03 static关键字(下)

    093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  5. 092 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 02 static关键字(中)

    092 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  6. 091 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 01 static关键字(上)

    091 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  7. java封装学习

    封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问.把过程和数据包围起来,对数据的访问只能通过已定义的接口. 在java中通过关键字priva ...

  8. Java中native关键字

    Java中native关键字 标签: Java 2016-08-17 11:44 54551人阅读 评论(0) 顶(23453) 收藏(33546)   今日在hibernate源代码中遇到了nati ...

  9. JAVA面向对象-----final关键字

    JAVA面向对象-–final关键字 1:定义静态方法求圆的面积 2:定义静态方法求圆的周长 3:发现方法中有重复的代码,就是PI,圆周率. 1:如果需要提高计算精度,就需要修改每个方法中圆周率. 4 ...

  10. Java-Runoob-面向对象:Java 封装

    ylbtech-Java-Runoob-面向对象:Java 封装 1.返回顶部 1. Java 封装 在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细 ...

随机推荐

  1. pytest之运行环境

    简介 pytest是Python最流程化的单元测试框架,它具有允许直接使用assert进行断言,而不需要使用self.assert*:可以自动寻找单测文件.类和函数,还可支持执行部分用例:Modula ...

  2. 智汇成城 ,创赢未来 | AI+产业峰会智慧城市专场在深成功举办!

    11月4日下午,由福田区人才工作局指导,广州英码信息科技有限公司和共达地创新技术(深圳)有限公司联合主办,深圳市人工智能行业协会承办的AI+产业峰会之智慧城市专场活动在深圳市南山区成功举办. &quo ...

  3. Promise async await的用法实例一枚

    getlog2() { console.log("222"); }, getlog3() { return new Promise((resolve, reject) => ...

  4. webpack之webpack和vite的区别

      打包原理 缺点 其他特点 webpack 解析各个模块的依赖关系 使用loader转换文件,使用plugin注入钩子,打包合并模块,最终生成bundle文件,使用express开启本地服务器, 浏 ...

  5. 11.7 消除闪烁(1)(harib08g)

    ps:看书比较急,有错误的地方欢迎指正,不细致的地方我会持续的修改 11.7 消除闪烁(1)(harib08g) 11.6 高速计数器(harib08f)存在闪烁的问题,产生原因:刷新时会从低到高进行 ...

  6. Java+Redis 通过Lua 完成库存扣减,创建消息队列,异步处理消息--实战

    需要完成功能 借助redis Stream 数据结构实现消息队列,异步完成订单创建,其中涉及到了缓存(击穿,穿透,雪崩),锁(Redisson),并发处理,异步处理,Lua脚本 IDE:IDEA 20 ...

  7. Prometheus Operator 与 kube-prometheus 之一-简介

    简介 Prometheus Operator Prometheus Operator: 在 Kubernetes 上管理 Prometheus 集群.该项目的目的是简化和自动化基于 Prometheu ...

  8. PHP微信三方平台-微信支付(扫码支付)

    1.官方文档地址: https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_1 2.逻辑分析: 生成支付二维码->用户扫码支付-& ...

  9. '林子雨大数据' 实验3 HBase操作与接口编程

    "林子雨大数据" 实验3 HBase操作与接口编程 环境搭建 VM虚拟机和Ubuntu系统的安装 在Windows中使用VirtualBox安装Ubuntu虚拟机(2020年7月版 ...

  10. 线性规划与整数规划—R实现

    线性规划的R语言实现 R语言在针对各类优化模型时都能快速方便的求解,对运输问题.生产计划问题.产销问题和旅行商问题等都有专门的R包来解决.线性规划与整数规划的区别主要在于对决策变量的取值约束有所不同. ...