构造方法和匿名对象
1,声明并实例化对象,这时候实例化对象中的属性没有任何数据
2,需要通过setter方法为类中属性设置内容。
传统实例化对象
class Person{ //定义一个类
private String name; //人员的姓名
private int age ; //人的年龄
public void tell(){
System.out.println("姓名:" + name + ",年龄:" + age);
public void setName(String n){
name = n;
}
public void setAge(int a){
age = a ;
}
piblic String getName(){
return name;
}
public int getAge(){
return age;
}
}
}
public class JavaDemo{ //主类
public static void main (String args[]{
//1,对象初始化准备
Person per = new Person (); //声明并实例化对象
per.name = "张三“;//在类外部修改属性
per.age = 18; //在类外部修改属性
//对象的使用
per.tell(); //进行方法的调用
}
现在如果类中有8个属性,那么需要用8个setter方法来进行内容设置,Java中考虑到对象问题,专门提供构造方法:可以通过构造方法来实现实例化对象中属性 初始化处理。new关键字。
Java中构造方法定义要求:
*构造方法名称必须与类名称保持一致;
*构造方法不允许设置任何的返回值类型,既:没有返回值定义;
*构造方法是在使用关键字new实例化对象的时候自动调用的
定义构造方法:
class Person{ //定义一个类
private String name; //人员的姓名
private int age ; //人的年龄
//方法名称与类名称相同,并无返回值类型
public Person (String n,int a){ //定义有参构造
name = a ; //为类中的属性赋值(初始化)
age = a; //为类中的属性赋值(初始化)
}
public void tell(){
System.out.println("姓名:" + name + ",年龄:" + age);
}
}
public class JavaDemo{ //主类
public static void main (String args[]{
//1,对象初始化准备
Person per = new Person ("张三",18); //声明并实例化对象
//对象的使用
per.tell(); //进行方法的调用
}
Person per = new Person():
Person 主要是定义对象的所属类型,类型决定了你可以调用的方法;
per 实例化对象的名称,所有的操作通过对象来进行访问;
new 开辟一块新的堆内存空间
Person(“张三”,18) 调用有参构造 Person()调用无参构造
在Java程序里考虑到程序结构的完整性,所有的类都会有提供构造方法,这个构造方法是在编译的时候自动创建,在类中有明确的构造方法,编译时就不会自动创建。
为什么构造方法上不允许设置返回值类型?
如果构造方法使用void,那么构造方法就会和普通方法结构完全相同,编译时会统一当作普通方法处理。
构造方法和普通方法的区别:
构造方法是在类对象实例化的时候调用,而普通方法是类对象实例化产生后调用的
构造方法的重载:参数类型及个数
setter修改属性数据
定义对象的名称:类名称 对象名称 = null
实例化对象: 对象名称 = new 类名称()