113: private 关键字的作用及使用
package cn.cgtn.day06.demo03;
/*
问题描述:定义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){
if(num<100&&num>=9){
//如果时合理情况
age=num;
}else{
System.out.println("数据不合理");
}
age=num;
}
//这个成员方法,专门获取age的数据
public int getAge(){
return age;
}
}
package cn.cgtn.day06.demo03;
public class Demo03Person{
public static void main(String[] args){
Person person=new Person();
person.show();
person.name="赵丽颖";
person.setAge(20);
person.age=18;
person.show();
}
}
114:练习使用private关键字定义学生类
package cn.itcast.day06.demo03;
/*
对于基本类型当中的boolean值,Getter方法一定要写成isXXX的形式,
而setXXX规则不变。
*/
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;
}
}
package cn.cgtn.day06.demo03;
public class Demo04Student{
public static void main(String[] args){
Student stu=new Student();
stu.setName("鹿晗");
stu.setAge(20);
stu.setMale(true);
System.out.println("姓名:"+stu.getName());
System.out.println("年龄:"+stu.getAge());
System.out.println("是否为男性:"+stu.isMale());
}
}
115: this 关键字的作用
新建一个包package Demo04
new上一个类Person
/*
当方法的局部变量和类的成员变量重名的时候,
根据就近原则,优先使用局部变量。
如果需要访问本类当中的成员变量,需要使用格式:
this.成员变量名
"通过谁调用的方法,谁就是this"
在重名的情况下,起到区分的效果。
*/
package cn.cgtn.day06.demo04;
public class Person{
String name;//我自己的名字
//who 是参数,是对方的名字
//成员变量name 是自己的名字
public void sayHello(String who){
System.out.println(who+",你好。我是"+this.name);
System.out.println(this);
//成员变量名String name写this.
//局部变量名写who, 不要写this
}
}
在 demo04类中new 一个类Demo01Person
package cn.cgtn.day06.demo04;
public class Demo01Person{
public static void main(String[] args){
Person person=new Person();
//设置我自己的名字
person.name="小明";
person.sayHello(who:"小红");
System.out.println(person);
}
}
116: 构造方法
在demo04类中,新建Student类
package cn.itcast.day06.demo04;
/*
构造方法是专门用来创建对象的方法,
当我们通过关键字new来创建对象时,
其实就是在调用构造方法。
格式:
public 类名称(参数类型 参数名称){
方法体
}
注意事项:
1.构造方法的名称必须和所在的类名称完全一样,就连大小写也要一样
2.构造方法不要写返回值类型,连void都不写
3.构造方法不能return一个具体的返回值
(void-return;)
4. 如果没有编写任何构造方法,
那么编译器将会默认赠送一个构造方法,没有参数、方法体,什么事情都不做。
5.一旦编写了至少一个构造方法,那么编译器将不再赠送。
6.构造方法也是可以进行重载的。
重载:方法名称相同,参数列表不同。
7.现在的这个类是由四个部分组成的,
1/成员变量
2/无参数的构造方法
3/全参数的构造方法
4/ Getter、Setter函数
public Student(){}
*/
public class Student{
//成员变量
private String name;//成员变量
private int age;
//public Student(){
//System.out.println("构造方法执行啦!");
//}
//编译器默认可以赠送一个
//无参数的构造方法
public Student(){
System.out.println("无参构造方法执行啦!");
}
//全参数的构造方法
public Student(String name,int age){
System.out.println("全参构造方法执行啦!");
this.name=name;
this.age=age;
}
//Getter, Setter
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age=age;
}
public int getAge(){
return age;
}
}
现在在demo04中创建一个Demo02Student
package cn.cgtn.day06.demo04;
public class Demo02Student{
public static void main(String[] args){
Student stu1=new Student();//无参构造
System.out.println("==========")
Student stu2=new Student(name:"赵丽颖",age:20);//全参构造
stu2.setAge(21);//改变年龄
System.out.println("姓名:"+stu2.getName()+",年龄:"+stu2.getAge());
//如果需要改变对象当中的成员变量数据内容,仍然还需要使用setXXX方法
}
}
117:定义一个标准的类 JavaBean
demo05
new一个Student类
package cn.itcast.day06.demo05;
/*
一个标准的类通常要拥有下面四个组成部分:
1.所有的成员变量都要使用private关键字修饰
2.为每一个成员变量编写一对儿Getter、Setter方法
3.编写一个无参数的构造方法
4.编写一个全参数的构造方法
这样标准的类也叫做Java Bean
*/
public class Student{
//成员变量
private String name;//姓名
private int age;//年龄
//此时选择Code---> Generate(Alt+Insert)---> 选择 Getter and Setter-->按住shift键,将Name和Age全都选中
--->生成啦
//再次选择Code--> Constructor(构造器,构造方法)--->选 Select None
//无参数的构造方法
public Student(){
}
//选择Code-->Generate-->Constructor->全参数的构造方法
public Student(String name,int age){
this.name=name;
this.age=age;
}
//getter,setter 写在最后,因为比较多
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public int getAge(){
return Age;
}
public void setAge(int age){
this.age=age;
}
}
然后如何使用呢?
package cn.cgtn.day06.demo05;
public class Demo01Student{
public static void main(String[] args){
Student stu1=new Student();
stu1.setName("小明");
stu1.setAge(20);
System.out.println("姓名:"+stu1.getName()+",年龄:"+stu1.getAge());
System.out.println("============");
Student stu2=new Student(name:"小红",age:21);
System.out.println("姓名:"+stu2.getName()+",年龄:"+stu2.getAge());
stu2.setAge(22);
System.out.println("姓名:"+stu2.getName()+",年龄:"+stu2.getAge());
}
}