wordpress企业仿站/厦门seo外包服务
有很多细节在学校老师是不会和我们详细讲解的,最近在系统学习Java一些知识,发现了很多自己不会的东西。例如,为什么要写get 与 set 方法呢?下面举个例子:
这是我们正常写的代码:
public class Student {//学生属性:姓名、年龄String name;int ages;//学生的行为:学习、做作业public void Study(){System.out.println("好好学习!");}public void DoHomework(){System.out.println("刷完1000题!");}
}
然后我们写一个测试类如下:
public class StudentDemo {public static void main(String[] args) {//实例化一个学生Student s=new Student();//给学生设置年龄,姓名s.ages=-18;s.name="小飞侠";//打印学生的年龄System.out.println(s.ages);//打印学生的姓名System.out.println(s.name);//学生学习s.Study();//学生写作业s.DoHomework();}
}
下面我们来分析一下以上两个代码:
在StudentDemo类中,我们直接可以访问s的ages和name属性,因为在Student中我们没有给这两个属性设置private限制,而是默认protect。但是,但是,但是,这样做问题就来了,我们设置的年龄是-18岁,这是不合法的数据,但是它确可以在别的类中直接访问。这违背了软件设计的初衷。因此我们必须把两个属性设置为private,只给在Student类本类中进行访问,Student类如下代码:
package com.cheney;public class Student {//学生属性:姓名、年龄private String name;private int ages;//学生的行为:学习、做作业public void Study(){System.out.println("好好学习!");}public void DoHomework(){System.out.println("刷完1000题!");}
}
如此一来,我们无法在别的类中访问ages和name,那我们如何在别的类中访问Student类的ages和name呢?这就是Get与Set方法的灵魂,Student类如下代码:
public class Student {//学生属性:姓名、年龄private String name;private int ages;//学生的行为:学习、做作业//Set方法public void setAges(int ages) {if(ages<0 || ages>120){System.out.println("输入年龄不合法!");}else {this.ages = ages;}}//Get方法public int getAges() {return ages;}public void Study(){System.out.println("好好学习!");}public void DoHomework(){System.out.println("刷完1000题!");}
}
这里以ages属性为例,主要看setAges和getAges方法,其中setAges方法中还有检查数据合法性的操作,这样就能避免其他类随意修改为非法数据,而必须通过以下方法调用与访问:
s.setAges(-18);//非法数据无法输入s.setAges(18); //合法数据可以输入int ages=s.getAges(); //获取学生年龄
以上就是Get与Set方法的牛逼之处,一般学校因为课时有限不会讲的如此清晰。不妥之处,欢迎指正!