面向对象的三大特性
面向对象三大特征:封装、继承、多态。 封装性在Java当中的体现: 1.方法就是一种封装 2.关键字private也是一种封装 封装就是将一些细节信息隐藏起来,对于外界不可见。
public class Demo02Method {
public static void main(String[] args){
int[] array = {5,15, 25, 20,100};
int max=getMax(array);
System.out.println("最大值:"+max);
}
//给我一个数组,我换给你一个最大值
public static int getMax(int[] array){
int max=array[0];
for (int i = 1; i< array.length; i++) {
if(array[i] >max){
max=array[i];
}
return max;
}
}
}
private关键字的作用及使用
问题描述:定义Person的年龄时,无法阻止不合理的数值被设置进来。解决方案:用private关键字将需要保护的成员变量进行修饰。
一旦使用了private进行修饰,那么本类当中仍然可以随意访问。但是!超出了本类范围之外就不能再直接访问了。 间接访问private成员变量,就是定义一对儿Getter/Setter方法 必须叫setXxx或者是getXxx命名规则。 对于Getter来说,不能有参数,返回值类型和成员变量对应;对于Setter来说,不能有返回值,参数类型和成员变量对应。
成员变量
public class Person {
String name; // 姓名
private int age; // 年龄
public void show() {
System.out.println("我叫:"+name +",年龄:"+ age);
}
//这个成员方法,专门用于向age设置数据 public void setAge(int num) {
age =num
}
Getter/Setter方法
public static void main(String[] args){
Person person=new Person();
person.show();
person.name ="赵丽颖";
//person.age=-20;//直接访问private内容,错误写法!
person.setAge(20);
person.show();
}
//这个成员方法,专门用于向age设置数据
public void setAge(int num) {
if(num < 100 && num >= 0) {// 如果是合理情况
age =num;
} else {
System.out.println("数据不合理!");
}
}
//这个成员方法,专门用于获取age的数据
public int getAge(){
return age;
}
练习使用private关键字定义学生类
关键是boolean常量的G/S语句
对于基本类型当中的boolean值,Getter方法一定要写成isXxx的形式,而setXxx规则不变。
G/S语句
public class student {
private String name; // 姓名
private int age; // 年龄
private boolean male; // 是不是爷们儿
public void setMale(boolean b) {
male = b;
}
public boolean isMale() {
return 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;
}
}
成员变量
public class Demo04Student {
public static void main(String[] args){
Student stu=newStudent();
stu.setName("鹿晗");
stu.setAge(20);
stu.setMale(true);
System.out.println("姓名:"+stu.getName());
System.out.println("年龄:"+stu.getAge());
System.out.println("是不是爷们儿:"+stu.isMale());
}
}
This关键句的作用
当方法的局部变量和类的成员变量重名的时候,根据“就近原则”,优先使用局部变量。
如果需要访问本类当中的成员变量,需要使用
格式: this.成员变量名
“通过谁调用的方法,谁就是this。"
public class Demo01Person{
public static void main(String[] args){
Person person=new Person();//设置我自己的名字
person.name ="王健林";
person.sayHello(name:"王思聪");
}
}
public class Person {
String name;// 我自己的名字
//参数name是对方的名字
//成员变量name是自己的名字
public void sayHello(String name) {
System.out.println(name +",你好。我是"+this.name);
}
}