相关内容推荐: 类的成员之一:属性。类的成员之二:方 法、对象
一、构造器
1.构造器的特征
- 它具有与类相同的名称
- 它不声明返回值类型。(与声明为void不同,区别与方法需要定义返回值类型)
- 不能被static、final、synchronized、abstract、native修饰,不能有return语句返回值
2.构造器的作用:
- 创建对象;
- 给对象进行初始化
如:Order o = new Order();无参 Person p = new Person(Peter,15);有参
3.分类
隐式无参构造器(系统默认提供)(class)
- Pubilc A(){}//构造器的命名与类名相同
- New 一个对象也是用的构造器
- Public的类默认的构造方法就是public;缺省的类它的构造方法就是缺省的
显式定义一个或多个构造器(无参、有参)
下面的一个例子体会一下“有参”和“无参”的区别。
public class f1 {
public int age;
public String name;
public void setInfo()
{
System.out.println(age);
System.out.println(name);
}
//下面提供两种调用方式,第一种无参,第二种有参,选一即可
/**
* 自己写一个构造方法,之后就不会用默认的了
* 构造器的名字必须跟本类名相同,无参的构造方法,不论怎么new对象,初始值是一样的
*/
public f1()
{
age=50;
name="宝宝";
}
public static void main(String[] args)
{
f1 p1=new f1();//这实际上是一个调用构造方法的过程。
p1.setInfo();
}
/**
* 需求:在new对象的时候能够自己给不同的值
*/
public f1(int a,String n)
{
age=a;
name=n;
}
public static void main(String[] args)
{
f1 p1=new f1(20,"三狗哥");//直接将要初始化的值放进去,
p1.setInfo();
}
}
4.注 意:
- Java语言中,每个类都至少有一个构造器,(它可以不用写出来,但是它就是在那,你new一个对象就是在调用构造器)
- 默认构造器的修饰符与所属类的修饰符一致
- 一旦显式定义了构造器,则系统不再提供默认构造器
- 一个类可以创建多个重载的构造器
- 父类的构造器不可被子类继承
二、构造器的重载
既然构造器是方法,那么方法是可以重载的,所以构造器也具有这一特点。
方法见Java5 面向对象编程1(类)第六条
- 只要构造器的()内不同即可 (构造器重载,参数列表必须不同)名称可以相同
- 目的是为了应对不同的情况。比如:不输入参数、输入数字、输入字符串……
class Person{
String name;
int age;
public Person(String n , int a){ name=n; age=a;}
}
public class Person{
public Person(String name, int age, Date d) {this(name,age);…}
public Person(String name, int age) {…}
public Person(String name, Date d) {…}
public Person(){…}
}
关键字—this
是什么?
- 它在方法内部使用,即这个方法所属对象的引用;
- 它在构造器内部使用,表示该构造器正在初始化的对象。
在哪里使用?
this表示当前对象,可以调用类的属性、方法和构 造器
什么时候使用this关键字?
- 当形参与成员变量重名时,如果在方法内部需要使用成员变量,必须添加this来表明该变量时类成员
- 在任意方法内,如果使用当前类的成员变量或成员方法可以在其前面添加this,增强程序的阅读性
- this可以作为一个类中,构造器相互调用的特殊格式
注意:
- 使用this()必须放在构造器的首行!
- 使用this调用本类中其他的构造器,保证至少有一个构造器是不用this的。(实际上就是不能出现构造器自己调用自己)
三、javaBean
所谓javaBean,是指符合如下标准的Java类:
- 类是公共的
- 有一个无参的公共的构造器
- 私有属性,属性一般是私有的,且有对应的get、set方法
设置Javabean的快捷方法
- 设置好成员
- 右击空白出,呼唤菜单栏
3. 点击ok
会自动生成JavaBean
如下:
public class Person {
int age;
int score;
String sex;
String name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
转载:https://blog.csdn.net/qq_45562910/article/details/104998051
查看评论