一、基础的属性使用方法
1、属性的定义语句
在类里面
public class fengzhuang {
private String subjectName;
int subjectLife;
2、把一个属性定义为private的作用
1、把属性定义为private,就是将访问的范围限制到了内部。
比如在一个类中,【通常属性的定义也是在类的内部, 这样类里面的方法也可以进行属性访问和调用】
2、优势:
【防止属性被 随意更改赋值】
比如subjectName被定义为private,
而subjectLife是默认的public
在另外一个类的方法中,创建好这个类的对象后,
会发现能够调用的属性,只有subjectLife,subjectName被隐藏了,只能通过那个类中的方法调用、赋值。
【限制属性的值或范围】
由于上一点,private的属性只能在本类中方法执行调用的语句,在对应的赋值方法里,可以限制属性的值
比如下面第3点。
3、属性的调用方法
set是设置属性内容
get是获取属性结果
public void setSubjectName(String subjectName){
this.subjectName=subjectName;
}
public String getSubjectName(){
return subjectName;
}
4、属性的限制方法
如果接收到的subjectLife小于等于0,就return结束方法的运行。
【在实际执行中,给subjectLife赋值-3,遇到return语句后,确实跳出了后面语句的执行】
但由于int的默认值为0,因此 最后输出的subjectLife是0。
public void setSubjectLife(int subjectLife) {
if (subjectLife <= 0)
return;
this.subjectLife = subjectLife;
}
5、属性值输出的语句为
public void projectTest(){
fengzhuang set1=new fengzhuang();
set1.setSubjectName("计算机科学与技术");
String n=set1.getSubjectName();
System.out.println("学科名字有"+n);
fengzhuang set2=new fengzhuang();
set2.setSubjectLife(-3);
int n1=set2.getSubjectLife();
System.out.println("学科制是"+n1+"年");
}
二、构造方法的属性赋值
1、构造方法的介绍
构造方法–无参构造方法
也称之为构造函数、构造器
1、构造方法与类同名且没有返回值类型,即只有2个单词,一个是访问修饰符,一个就是名
2、只能在对象实例化的时候调用
3、当没有指定构造方法时,系统会自动添加无参的构建方法
4、当有指定构造方法,无论是有参、无参的构造方法,都不会自动添加无参的构造方法
5、一个类中可以有多个构造方法
带参构造方法
参数的传值遵循就近原则,比如在类中创建了成员属性,在类的构造方法中也创建了同样的变量。
但是在调用构造方法进行传值时,时优先在【同一个范围内即】构造方法中找对应的变量,如果有的话,就传给它们。
如果找不到对应的,才会【扩大搜索范围】传递给类中的成员属性。
2、带参构造方法对属性赋值
带参构造,实现对属性的全部赋值
先在属性设置的类中添加上
public fengzhuang(String subjectName,int subjectLife){
//相当于this.subjectName=subjectName;
this.setSubjectLife(subjectLife);
this.setSubjectName(subjectName);
}
public String info(){
String str="学科名称\n"+this.getSubjectName()+"学制"+this.getSubjectLife();
return str;
}
此时属性的调用语句可以简写为
public void projectTest(){
fengzhuang fe=new fengzhuang("英语",3);
System.out.println(fe.info());
}
3、快捷键自动创建构造方法
快捷键是alt+insert
也可以右键创建
路径是generate-constructor-选择属性,点OK就是创建带参构造方法
不选择属性,点击select None,就是创建无参构造方法
附两种方式的代码
第一种
1、设置属性
package com.company;
public class fengzhuang {
private String subjectName;
int subjectLife;
public void setSubjectName(String subjectName){
this.subjectName=subjectName;
}
public String getSubjectName(){
return subjectName;
}
public void setSubjectLife(int subjectLife) {
if (subjectLife <= 0)
return;
this.subjectLife = subjectLife;
}
public int getSubjectLife(){
return subjectLife;
}
}
2、属性调用
package com.company;
import com.company.fengzhuang;
public class Main {
public static void main(String[] args) {
Main ma=new Main();
ma.projectTest();
}
public void projectTest(){
fengzhuang set1=new fengzhuang();
set1.setSubjectName("计算机科学与技术");
String n=set1.getSubjectName();
System.out.println("学科名字有"+n);
fengzhuang set2=new fengzhuang();
set2.setSubjectLife(-3);
int n1=set2.getSubjectLife();
System.out.println("学科制是"+n1+"年");
}
}
第二种
1、设置属性
package com.company;
public class fengzhuang {
private String subjectName;
int subjectLife;
public void setSubjectName(String subjectName){
this.subjectName=subjectName;
}
public String getSubjectName(){
return subjectName;
}
public void setSubjectLife(int subjectLife) {
if (subjectLife <= 0)
return;
this.subjectLife = subjectLife;
}
public int getSubjectLife(){
return subjectLife;
}
public fengzhuang(String subjectName,int subjectLife){
//相当于this.subjectName=subjectName;
this.setSubjectLife(subjectLife);
this.setSubjectName(subjectName);
}
public String info(){
String str="学科名称\n"+this.getSubjectName()+"学制"+this.getSubjectLife();
return str;
}
}
2、调用属性
package com.company;
import com.company.fengzhuang;
public class Main {
public static void main(String[] args) {
Main ma=new Main();
ma.projectTest();
}
public void projectTest(){
fengzhuang fe=new fengzhuang("英语",3);
System.out.println(fe.info());
}
}
今天的内容就到这里,如果有疑问,欢迎留言~