4.3.4构造器
java中并没有构造方法的概念是从c++以往的书籍中翻译过来的所以所说的构造器就是构造方法。
构造器与类同名
每个类都可以有一个以上的构造器
构造器可以有0个、1个或多个参数
构造器没有返回值,但是不能声明void,访问权限可以为任意(一般情况下使用public方法权限)
构造器总是伴随着new操作一起调用
同时需要注意的是不要在构造器中定义与实例域重名的局部变量。
类可以不定义构造方法,这时编译器会为类隐含声明一个方法体为空的无参构造方法。但当类有明确的构造方法时,编译器就不会自动生成无参构造方法了。
4.3.5隐式参数与显式参数
方法用于操作对象以及存取它们的时实例域。
package com.Test;
public class Test {
private double salary = 100;
public void raiseSalary(double em) {
double employ = salary * em;
this.salary += employ;
System.out.println(salary);
}
public static void main(String[] args) {
Test test = new Test();
test.raiseSalary(0.5);
}
}
raiseSalary方法有两个参数(salary和em)第一个参数称为隐式参数,是出啊先在方法名前的Employee类对象(salary)。第二个参数称为显示参数,参数位于方法名后面括号中的数值(em)
一般用关键字this表示隐式参数。
4.3.6封装的优点
再仔细看一下非常简单的getName方法、getName方法、getSalary方法和getHireDay方法。
public String getName()
{
return name;
}
public double getSalary()
{
return salary;
}
public LocalDate getHireDay()
{
return hireDay;
}
这些都是典型的访问器方法。由于它们只有返回实例域值,因此又称为域访问器。
有些时候,需要获取或
在这里插入一下java中get()和set()方法的理解和使用
set是设置的意思,而get是获取的意思,顾名思义,这两个方法是对数据进行设置和获取用的。而且,在类中使用set和get后面
跟上一些特别的词来形容特定意思的方法名。
Java面向对象编程中的封装性和安全性。封闭性即对类中的域变量封闭操作,即用private来修饰他们,如此一来其他类则不对该变量访问。提高了域变量的安全性,同时保证了域变量的封装性。
其实还有控制数值的输入,来保证程序的安全行
比如下面代码,控制输入年龄通过get(),set()。
package com.Test;
public class Test1 {
public static void main(String[] args) throws Exception {
Test test = new Test();
test.setAge(121);
System.out.println(test.getAge());
}
}
package com.Test;
public class Test {
private String name;
private int age;
private char gender;
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the age
*/
public int getAge() {
return age;
}
/**
* @param age the age to set
* @throws Exception
*/
public void setAge(int age) throws Exception {
if(age < 1 || age > 120 ) {
throw new Exception ("您输入的年龄不合法");
}else {
this.age = age;
}
}
/**
* @return the gender
*/
public char getGender() {
return gender;
}
/**
* @param gender the gender to set
*/
public void setGender(char gender) {
this.gender = gender;
}
}