java封装和关键字
一、封装
封装:告诉我们如何正确设计对象的属性和方法
对象代表什么,就得封装对应的数据,并提供数据对应的行为
封装的好处:
让编程变得很简单,有什么事,找对象,调方法
降低学习成本,可以少学,少记,或者说压根不用学,不用记对象有哪些方法,有需要时去找就行
二、Private关键字:
是一个权限修饰符
可以修饰成员变量(成员变量和成员方法)
被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
她会吃饭
她会干活
总结:
Private关键字是一个权限修饰符
可以修饰成员(成员变量和成员方法)
被private修饰的成员只能在本类中才能访问
针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作:
1、提供”setXxx(参数)“方法,用于给成员变量赋值,方法用public修饰
2、提供”getXxx()“方法,用于获取成员变量的值,方法用public修饰
三、this.关键字
成员变量和局部变量:
成员变量:把定义的变量定义在方法的外面,类的里面叫做成员变量
局部变量:把变量定义在方法里面叫做局部变量
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封装和关键字的更多相关文章
- java——封装和关键字
封装:将类的属性和方法的实现细节隐藏起来的过程 封装的好处:1重用性(代码)2,利于分工3,隐藏细节 访问关键字:public private 默认访问修饰符,protected static关键字 ...
- java 封装与this关键字
一 封装 1.封装的概述 封装,它也是面向对象思想的特征之一.面向对象共有三个特征:封装,继承,多态. 封装表现: 1.方法就是一个最基本封装体. 2.类其实也是一个封装体. 从以上两点得出结论,封装 ...
- 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封装 ...
- 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封装 ...
- 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封装 ...
- 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封装 ...
- java封装学习
封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问.把过程和数据包围起来,对数据的访问只能通过已定义的接口. 在java中通过关键字priva ...
- Java中native关键字
Java中native关键字 标签: Java 2016-08-17 11:44 54551人阅读 评论(0) 顶(23453) 收藏(33546) 今日在hibernate源代码中遇到了nati ...
- JAVA面向对象-----final关键字
JAVA面向对象-–final关键字 1:定义静态方法求圆的面积 2:定义静态方法求圆的周长 3:发现方法中有重复的代码,就是PI,圆周率. 1:如果需要提高计算精度,就需要修改每个方法中圆周率. 4 ...
- Java-Runoob-面向对象:Java 封装
ylbtech-Java-Runoob-面向对象:Java 封装 1.返回顶部 1. Java 封装 在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细 ...
随机推荐
- EVE如何提升名望值
目录 背景介绍 简介 名望值划分 军团名望值 利弊 背景介绍 玩eve将近3个星期,开着毒蜥级刷1级代理人任务感觉没有一点难度,想尽快刷3.4级代理任务,而我目前能够接到的最高代理任务也就才1级. ...
- c#和JS数据加密(转)
前台提交按纽 后以赋值后台取值 Base64编解码 C# /* 编码规则 Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码. 它将需要编码的数据拆分成字节数组. ...
- EL表达式 总结
EL表达式,全称是Expression Language.意为表达式语言.它是Servlet规范中的一部分,是JSP2.0规范加入的内容.其作用是用于在JSP页面中获取数据,从而让我们的JSP脱离ja ...
- MySQL视频学习 1-18小节
地址:https://www.bilibili.com/video/av39807944/?p=16 1-15:撘环境.建表.数据类型(https://www.runoob.com/mysql/mys ...
- jquery的y一些实用方法
jquery的在线手册 jQuery获取Select选择的Text和Value:语法解释:1. $("#select_id").change(function(){//code.. ...
- JDK 7 HashMap 并发情况下的死锁问题
目录 问题描述 详细解释 问题描述 JDK7的 HashMap 解决冲突用的是链表,在插入链表的时候用的是头插法,每次在链表的头部插入新元素.resize() 的时候用的依然是头插,头插的话,如果某个 ...
- Dubbo和Zookeeper(Springboot集成)
Dubbo和Zookeeper集成: 分布式理论: 分布式系统是由一组通过网络进行通信.为了完成共同的任务而协调工作的计算机节点组成的系统.分布式系统的出现是为了用廉价的.普通的机器完成单个计算机无法 ...
- SpringBoot笔记--文件配置加载顺序+整合其他框架
内部文件配置加载顺序 外部文件配置加载顺序 jar包配置 整合Junit 若是业务管理类和测试类在同一个包下面,那么这句话, 可以不加括号,只写注解名称 否则,就必须指定到包下面,不然会报错 整合Re ...
- 同步协程的必备工具: WaitGroup
1. 简介 本文将介绍 Go 语言中的 WaitGroup 并发原语,包括 WaitGroup 的基本使用方法.实现原理.使用注意事项以及常见的使用方式.能够更好地理解和应用 WaitGroup 来协 ...
- Vue-router与hash与history区别
vue-router 基本使用 路由,其实就是指向的意思,当我点击页面上的home按钮时,页面中就要显示home的内容,如果点击页面上的about 按钮,页面中就要显示about 的内容.Home ...