java构造方法

构造方法

构造方法属于类的特殊方法,例如(Student s1 = new Student()),声明Student类对象s1的同时调用Student类的构造方法Student(),并实例化一个Student对象。

定义构造方法

class 类名{

访问权限 类名(形参列表){

//方法体;

//构造方法没有返回值

        }

}

 class Student1 {
    String name;
    String sex;
    public Student1(){//构造方法
        System.out.println("演示");
    }
    public Student1(String aname,String asex){//构造方法
        name = aname;
        sex = asex;
    }

构造方法的特殊性

1.构造方法名与类名相同

package pulank.tesila.kelayi;
//方法名
class Student2 {
        String name;
        int age;
//构造名
    Student2(){
        System.out.println();
    }
//构造名
    Student2(String aname,int aage){
        name = aname;
        age = aage;
    }
}

2.不能为构造方法指定类型,也不能用return语句返回值,构造方法有隐含的返回值,该值由系统内部使用,我们不用管他

如果我们指定类型,会报错,显示无法将构造方法应用给指定方法

如果我们使用return语句,会显示不兼容类型,出现意外的值,当然也是报错

3.可以重载构造方法,即能定义多个有不同参数列表的构造方法

​
package pulank.tesila.kelayi;
//方法名
class Student2 {
        String name;
        String sex;
        int age;
//重载方法
    Student2(String sex){
        sex = asex;
    }
    Student2(String aname,int aage){
        name = aname;
        age = aage;
    }
}

​

4.在使用构造方法时,使用new关键字创建对象时,JVM为新建对象在堆内存开辟空间后,JVM将自动调用构造方法初始化新对象,在java中,通过“new 构造方法名(实参列表);”的形式调用构造方法,而不能直接用“构造方法名(实参列表);”调用构造方法

Student2 s1 = new Student2("nan");
Student2 s2 = new Student2("zhangsan",18);

5.如果自定义类中为定义构造方法,系统将为这个类提供一个默认的空构造方法,默认的空构造方法没有参数,方法体中也没有语句

//空方法
Student2 (){

}

6.如果自定义类中定义了任何构造方法,系统将不再提供空构造方法

使用构造方法

package pulank.tesila.kelayi;

 class Student1 {
    String name;
    String sex;
    int age;
    Student1(){
        System.out.println("演示");
    }
    Student1(String aname,String asex,int aage){
        name = aname;
        sex = asex;
        age = aage;
    }
    Student1(String aname,String asex){
        name = aname;
        sex = asex;
    }
    public void getStudent1(){
         System.out.println("姓名:"+this.name+"\t"+"性别:"+this.sex);
     }
     public void getStudent2(){
         System.out.println("姓名:"+this.name+"\t"+"性别:"+this.sex+"\t"+"年龄:"+this.age);
     }
     public static void main(String[] args) {
         Student1 s1 = new Student1();
         Student1 s2 = new Student1("wangwu","nan",18);
         Student1 s3 = new Student1("lisi","nan");
         s1.name = "zhangsan";
         s1.sex = "nan";
         s1.getStudent1();
         s2.getStudent2();
         s3.getStudent1();
     }
 }

输出结果为:

this关键字

this关键字的作用

1.引用类中的数据成员

this.数据成员名;

package pulank.tesila.kelayi;

public class Student2 {
    private String name;
    private int age;

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

2.引用类中的成员方法

this.成员方法名(实参列表);

private String getStudent(){
        return "姓名:"+this.name+",年龄:"+this.age;
    }
    private int getyear(){
        int year = Calendar.getInstance().get(Calendar.YEAR)-this.age;
        return year;
    }

3.调用本类的构造方法

this(参数列表);

public void display(){
        System.out.println(this.getStudent()+"出生于"+this.getyear()+"年");
    }

4.表示当前对象

package pulank.tesila.kelayi;

import java.util.Calendar;

public class Student2 {
    //私有化数据成员
    private String name;
    private int age;
//构造方法
    public Student2() {//空构造方法,标配
    }

    public Student2(String name,int age) {
        this.name = name;
        this.age = age;
    }
    //私有成员方法
    private String getStudent(){
        return "姓名:"+this.name+",年龄:"+this.age;
    }
    private int getyear(){
        int year = Calendar.getInstance().get(Calendar.YEAR)-this.age;
        return year;
    }
    //调用私有成员方法
    public void display(){
        System.out.println(this.getStudent()+"出生于"+this.getyear()+"年");
    }
    public static void main(String[] args) {
        Student2 s1 = new Student2();
        s1.name = "张三";
        s1.age = 18;
        Student2 s2 = new Student2("李四",17);
        s1.display();
        s2.display();
    }
}

输出结果为:

Calendar.getInstance()方法,不仅能获取当前的时间,还能指定需要获取的时间点,

package pulank.tesila.kelayi;

import java.util.Calendar;

public class Student3 {
    public static void main(String[] args) {
        int s1 = Calendar.getInstance().get(Calendar.YEAR);
        System.out.println(s1);
    }

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值