JAVASE 小白学习笔记 构造方法的探索

在Java中,我们知道面向对象有三大特征:封装、继承与多态。我们也了解到类是一个抽象的概念,我们不能进行直接地使用。要使用一个类中的属性与功能,必须对类进行实例化。

所谓的实例化,我们可以理解为创建该类的对象。在创建对象时,除了要用关键字外,我们还需要借助构造方法,来完成对类的实例化


1.利用无参构造完成对类的实例化

构造方法的定义:
在类中,方法名与类名相同,没有返回值类型,甚至连void都没有

public class MyTest3 {
    
    
    public static void main(String[] args) {
    
    
        //无参构造完成对类的实例化
        Star star = new Star();
        star.setName("陈奕迅");
        star.setAge(35);
        System.out.println(star.getName());
        System.out.println(star.getAge());
    }

}


class Star{
    
    
    //私有化成员变量
    private   String name;
    private int age;
    /*无参构造不写也会默认存在的,但也可以自己手动写出
    构造方法的语法为:构造方法名与类名同名,没有返回值的类型,
    甚至连void也没有*/
    public Star(){
    
     }
    //提供get set方法可以对成员变量进行赋值与显示的操作

    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;
    }
}

输出的结果为:陈奕迅
	     35

注意:我们自定义一个类时,类中就会默认存在一个空参的构造方法。当我们只是用无参构造去完成类的实例化时,此空参构造方法可写可不写。


2.利用有参构造完成对类的实例化

构造方法是可以进行方法重载的。
所谓的方法重载就是在一个类中,允许一个以上的同名方法,方法名相同,参数列表不同(参数的类型不同,参数的个数不同),不以返回值类型作区别。

通过有参构造进行对类的实例化,通常比起无参构造对类的实例化比较简单。

public class MyTest {
    
    
    public static void main(String[] args) {
    
    
        //使用有参构造来实现对类的实例化
        Star star = new Star("王力宏", 32);
        System.out.println(star.getAge());
        System.out.println(star.getName());

    }
}


class Star{
    
    
    //私有化成员变量
    private  String name;
    private int age;
    //提供有有参构造方法
    public Star(String name,int age){
    
    
        this.name=name;
        this.age=age;
    }
    //提供get方法即可

    public String getName() {
    
    
        return name;
    }


    public int getAge() {
    
    
        return age;
    }


}


输出的结果为:
           32
           王力宏

但要注意的是:
当使用有参构造方法去实现对类的实例化时,此时默认的无参构造方法将不会存在。如果还想要无参构造来实现对类的实例化时,自己需要手动将无参构造方法写出来。


3.无参构造,有参构造对类的实例化

由上面可见,一个标准的类由成员变量,成员方法以及构造方法构成。下面给出一个标准类的写法:会提供成员变量,成员方法以及构造方法。

public class MyTest {
    
    
    public static void main(String[] args) {
    
    
        //使用无参构造来完成对类的实例化
        Star s1 = new Star();
        s1.setName("林俊杰");
        s1.setAge(30);
        System.out.println(s1.getName());
        System.out.println(s1.getAge());
        System.out.println("=====================");
        //使用有参构造来完成对类的实例化
        Star s2 = new Star("许嵩", 28);
        System.out.println(s2.getName());
        System.out.println(s2.getAge());
    }
}

class Star{
    
    
    //1.私有化成员变量
    private  String name;
    private int age;
    //2.提供无参构造方法
    public Star(){
    
    }
    //3.提供有参构造方法
    public Star(String name,int age){
    
    
        this.name=name;
        this.age=age;
    }
    //4.提供get set方法
    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;
    }
}

输出的结果为:
林俊杰
30
=====================
许嵩
28

4.构造方法练习题

练习:定义一个长方形(Rectangle)类,定义求周长与求面积的方法,然后定义一个测试类进行测试。

//Rectanle 类
public class Rectangle {
    
    
    //1.成员变量私有化
    private double chang;
    private double kuan;
    //2.无参构造方法
    public Rectangle(){
    
    }
    //3.有参构造方法
    public Rectangle(double chang,double kuan){
    
    
        this.chang=chang;
        this.kuan=kuan;
    }
    //4.提供set get方法
    public double getChang() {
    
    
        return chang;
    }

    public void setChang(double chang) {
    
    
        this.chang = chang;
    }

    public double getKuan() {
    
    
        return kuan;
    }

    public void setKuan(double kuan) {
    
    
        this.kuan = kuan;
    }
    //提供周长与面积的方法
    public double zhoouchang(){
    
    
        return chang*kuan;
    }
    public double area(){
    
    
        return 2*(chang+kuan);
    }
}


//测试类:
public class MyTest {
    
    
    public static void main(String[] args) {
    
    
        Rectangle rectangle = new Rectangle();
        rectangle.setChang(5);
        rectangle.setKuan(3);
        System.out.println(rectangle.zhoouchang());
        System.out.println(rectangle.area());
        System.out.println("===================");
        Rectangle rectangle1 = new Rectangle(5, 5);
        System.out.println(rectangle1.zhoouchang());
        System.out.println(rectangle1.area());
    }
}

输出的结果为:
15.0
16.0
===================
25.0
20.0

猜你喜欢

转载自blog.csdn.net/qq_41537102/article/details/110194381