学习java第八天
构造方法
构造方法作用: 是定义在java类中的一个用来初始化对象的方法,用new+构造方法,创建一个新的对象,并可以给对象中的实例进行赋值。
语法规则:
1.方法名必须与类名相同
2.无返回值类型,也不能用void修饰(有任何返回值类型的方法都不是构造方法)
3.可以指定参数,也可以不指定参数;分为有参构造方法和无参构造方法
构造方法的特点:
1.当没有指定构造方法时,系统会自动添加无参的构造方法。
2.构造方法可以重载:方法名相同,但参数不同的多个方法,调用时会自动根据不同的参数选择相应的方法。
3.构造方法是不被继承的
4.当我们手动的指定了构造方法时,无论是有参的还是无参的,系统都将不会再添加无参的构造方法。
5.构造方法不但可以给对象的属性赋值,还可以保证给对象的属性赋一个合理的值
比如,我们在给人的年龄赋值的时候,一般年龄的范围在1-120之间,如果这时候赋了一个160岁的年龄,那么显然这是不合理的,我们可以在赋值的时候加上一个判断:
if (newAge >120) {//参数不合理大于120岁时,默认为120岁
System.out.println("您输入的年龄参数有问题,将默认为120");
age =120;
} else {//参数合理时,就是我们自己的赋值
age = newAge;
}
- 构造方法不能被static、final、synchronized、abstract和native修饰。
例题1
package com.hg.demo03;
public class Student {
private String name;
private int age;
//构造函数
public Student(){
System.out.println("我是无参构造方法");
}
public Student(String name, int age){
System.out.println("我是有参构造方法");
this.name=name;
if(age>=0&&age<150)
this.age=age;
else
System.out.println("age参数不合法");
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return this.age;
}
public void setName(String name) {
this.name=name;
}
public String getName() {
return this.name;
}
public void show(){
System.out.println("我叫"+this.name+" "+this.age+"岁");
}
}
package com.hg.demo03;
public class demo03Student {
public static void main(String[] args) {
Student stu1 = new Student();
stu1.show();
System.out.println("================");
Student stu2 = new Student("迪丽热巴",30);
stu2.show();
stu2.setAge(31);
stu2.show();
}
}
例题2
package com.hg.demo04;
public class Student {
private String name;
private int age;
public Student(){
}
public Student(String name) {
super();
this.name = name;
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
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 com.hg.demo04;
public class demo04Student {
public static void main(String[] args) {
Student stu1 = new Student("孙俪");
stu1.setAge(38);
System.out.println("我是"+stu1.getName()+"我已经"+stu1.getAge()+"岁");
System.out.println("=========================");
Student stu2 = new Student("王祖蓝",42);
System.out.println("我是"+stu2.getName()+"我已经"+stu2.getAge()+"岁");
stu2.setAge(43);
System.out.println("我是"+stu2.getName()+"我已经"+stu2.getAge()+"岁");
}
}