面向对象三大特征:封装、继承、多态。
封装性在java中的体现:
1.方法就是一种封装。
2.关键字private也是一种封装
封装就是将一些细节信息隐藏起来,对于外界不可见。
package 封装;
/**
* @Author: Jason
* @Date: 2019/5/31 19:06
* @Version 1.0
*/
public class DemoMethod {
public static void main(String[] args) {
int array[] = {12, 34, 56, 24, 78, 90, 65};
int max = getMax(array);
System.out.println("最大值为:" + max);
}
//给我一个数组,给你找出最大值
public static int getMax(int array[]) {
int max = 0;
for (int i = 0; i < array.length - 1; i++) {
if (max < array[i]) {
max = array[i];
}
}
return max;
}
}
private关键字的作用及使用
/**
* 定义Person的年龄时,无法阻止不合理的数值被设置进来。
* 用private关键字将需要保护的成员变量进行修饰
* <p>
* 一旦使用了private进行修饰,那么本类中仍然可以随意访问。
* 但是 超出本类范围就不能再直接访问了。(可以间接)
*/
间接访问private成员变量,就是定义一对Getter/Setter方法
必须叫setXxx或者是getXxx命名规则。
对于Getter来说,不能有参数,返回值类型和成员变量对应。
对于Setter来说,不能又返回值,参数类型和成员变量对应
package 封装;
/**
* @Author: Jason
* @Date: 2019/5/31 22:56
* @Version 1.0
*/
/**
* 定义Person的年龄时,无法阻止不合理的数值被设置进来。
* 用private关键字将需要保护的成员变量进行修饰
* <p>
* 一旦使用了private进行修饰,那么本类中仍然可以随意访问。
* 但是 超出本类范围就不能再直接访问了。(可以间接)
*/
public class Person {
String name;
private int age;
public void show() {
System.out.println("我叫" + name + "年龄是" + age);
}
//这个方法用于设置age数据
//通过setAge方法可以间接 访问 有大括号的存在可以加if语句 判断年龄
public void setAge(int num) {
if (0 < num && num <= 100) {
age = num;
}else {
System.out.println("年龄不符合!");
}
}
//这个成员方法 私语获取age数据
public int getAge() {
return age;
}
}
package 封装;
/**
* @Author: Jason
* @Date: 2019/6/1 17:46
* @Version 1.0
*/
public class DemoPerson {
public static void main(String[] args) {
Person person = new Person();
person.show();
System.out.println("===============");
person.name = "张三";
// person.age = -23; 错误写法 -23 不符合 //直接访问private内容 错误
person.show();
System.out.println("---------------");
person.setAge(-34);
person.show();
System.out.println("==============");
person.setAge(56);
person.show();
}
}
练习使用private关键字定义学生类
package 封装;
/**
* @Author: Jason
* @Date: 2019/6/1 21:12
* @Version 1.0
*/
public class Student {
private String name;//姓名
private int age; //年龄
private boolean male; //是不是男的
public void setName(String str) {
name = str;
}
public String getName() {
return name;
}
public void setAge(int num) {
age = num;
}
public int getAge() {
return age;
}
//对于基本类型中的boolean值,Getter方法一定要写成isXxx
//而setXxx规则不变
public void getMale(boolean a) {
male = a;
}
public boolean isMale() {
return male;
}
}
package 封装;
/**
* @Author: Jason
* @Date: 2019/6/1 21:22
* @Version 1.0
*/
public class DemoStudent {
public static void main(String[] args) {
Student student = new Student();
student.setName("小可爱");
student.setAge(23);
student.getMale(true);
System.out.println("姓名:" + student.getName());
System.out.println("年龄:" + student.getAge());
System.out.println("是不是男的:" + student.isMale());
}
}