一. 构造方法:
1. 首先我们应该想到对象的产生过程:类名 对象名 = new 类名();注意看后面有一个括号"()",这代表这是一个方法,什么方法?构造方法!
构造方法的定义格式:
class 类名称{
访问权限 类名称 (参数列表){
程序语句;
....................;//构造方法无返回值
}
}
由以上定义可知:
(1) 构造方法名必须和类名一样.
(2)构造方法不能设置声明任何返回值类型,只能设置访问权限.
(3)构造方法中不能使用return 返回一个值;(由(2)知道)
(4)构造方法可以为类中的属性初始化!
public class GouZhao1 {
public static void main(String[] args) {
ConsTest1 consTest = null;//声明对象
consTest = new ConsTest1("nishui",21);//实例化对象就是为其开辟堆内存空间,这时会自动调用构造方法
consTest.tell();
}
}
class ConsTest1{
String name;
int age;
public ConsTest1(String name,int age){//构造方法,初始化类中属性
this.name = name;
this.age = age;
}
public void tell(){
System.out.println("姓名:" + name +",年纪:" + age);
}
}
声明对象时,构造方法并没有被调用,只有当使用new关键字开辟堆空间是调用了构造方法.构造方法存放在全局代码区中.如下:
package Nsbc.club;
public class GouZhao {
public static void main(String[] args) {
ConsTest consTest = null;//声明对象
consTest = new ConsTest();//实例化对象就是为其开辟堆内存空间,这时会自动调用构造方法
}
}
class ConsTest{
public ConsTest(){
System.out.println("调用构造方法!");
}
}
注意:当我们没有定义构造方法时,则会自动生成一个无参的什么也不做的构造方法,每一个类中至少有一个构造方法.
如下:当我们没有定义构造方法时,则会自动生成如下构造方法:
class ConsTest{
public ConsTest(){
}
}
2.构造方法是可以重载的,他和普通方法重载一样,构造方法名称都和 类名一样,参数个数或者参数类型不同,不同的是构造方法并无返回值类型。
举例:
class GouTest{
String name;
int age;
public GouTest(){//无参构造方法
}
public GouTest(String name){//含有1个参数的构造方法
this.name = name;
}
public GouTest(String name,int age){//含有2个参数的构造方法
this.name = name;
this.age = age;
}
}
二.匿名对象的使用:
1.匿名:就是没有名字。 为什么要使用匿名对象?当我们定义的对象只使用一次的时候,为了方便操作,于是就定义了匿名对象.
举例:
public class NoName {
public static void main(String[] args) {
new ConsTest2("nishui",21).tell();//此为匿名对象调用tell()方法。
}
}
class ConsTest2{
String name;
int age;
public ConsTest2(String name,int age){
this.name = name;
this.age = age;
}
public void tell(){
System.out.println("姓名:" + name +",年纪:" + age);
}
}
由以上可知,匿名对象就是比之前的对象少了一个栈内存的引用关系.他只在堆内存中开辟空间.