类的成员之三:构造器(构造方法)

类的成员之三:构造器(构造方法),第1张

类的成员之三:构造器(构造方法) 其中一和二还有:类的成员之二:方法,类的成员之一:属性
构造器(construct) 构造器的特征 它具有与类相同的名称它不声明返回值类型。(与声明为void不同)不能被static、final、synchronized、abstract、native修饰,不能有 return语句返回值 构造器的作用: 创建对象;给对象进行初始化

如:Order o = new Order(); Person p = new Person(“Peter”,15);

如同我们规定每个“人”一出生就必须先洗澡,我们就可以在“人”的 构造器中加入完成“洗澡”的程序代码,于是每个“人”一出生就会自 动完成“洗澡”,程序就不必再在每个人刚出生时一个一个地告诉他们 要“洗澡”了。

说明(重点复习) 如果没有显示的定义类的构造器的话,则系统默认提供一个空参的构造器定义构造器的格式:权限修饰符 类名(形参列表){}一个类种定义的多个构造器,彼此构成重载一旦我们显示的定义了类的构造器之后,系统不再提供默认的空参构造器构造器的权限默认和类相同

根据参数不同,构造器可以分为如下两类:

隐式无参构造器(系统默认提供)

显式定义一个或多个构造器(无参、有参)

注 意:

Java语言中,每个类都至少有一个构造器默认构造器的修饰符与所属类的修饰符一致一旦显式定义了构造器,则系统不再提供默认构造器一个类可以创建多个重载的构造器父类的构造器不可被子类继承 代码举例
package GouZaoQi;

public class A {
    public static void main(String[] args) {
        //创建类的对象:new +构造器
        Person p1 = new Person();
        p1.eat();
        Person p2=new Person("tom");
        System.out.println(p2.name);//运行结果:tom
    }
}
class Person{

    //属性
    String name;
    int age;

    //构造器
    public Person(){
        System.out.println("构造器");
    }
    //构造器(作用:给对象初始化)
    public Person(String a){
        name = a;//相当于new对象的时候就可以给name赋值
    }
    //方法
    public void eat(){
        System.out.println("人吃饭");
    }
}

练习题 练习题1:

题目:

在前面定义的Person类中添加构造器,利用构造器设置所有人的age属 性初始值都为18。

修改上题中类和构造器,增加name属性,使得每次创建Person对象的同 时初始化对象的age属性值和name属性值。

代码:

package GouZaoQi;
//1.在前面定义的Person类中添加构造器,利用构造器设置所有人的age属性初始值都为18。
//2.修改上题中类和构造器,增加name属性,使得每次创建Person对象的同时初始化对象的age属性值和name属性值。
public class LXT {
    public static void main(String[] args) {
        Person2 p1 = new Person2("tom",9);
        System.out.println("name="+p1.getName()+",age="+p1.getAge());//运行结果:name=tom,age=9
    }
}
class Person2{
     private int age;
     private String name;
    public Person2(){
        age =18;
    }
    public Person2(String n,int a){
        name=n;
        age=a;
    }

    public void setName(String n) {
        name = n;
    }
    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
练习题2:

题目:

​ 编写两个类,TriAngle和TriAngleTest,其中TriAngle类中声明私有的底边长base和高height,同时声明公共方法访问私有变量。此外,提供类必要的构造器。另一个类中使用这些公共方法,计算三角形的面积。

代码:

TriAngle

package GouZaoQi;
//编写两个类,TriAngle和TriAngleTest,其中TriAngle类中声明私有的底
//边长base和高height,同时声明公共方法访问私有变量。此外,提供类
//必要的构造器。另一个类中使用这些公共方法,计算三角形的面积。
public class TriAngle {
    //属性
    private double base;
    private double height;
    //构造器

    public TriAngle(double b,double h){
        base=b;
        height=h;

    }
    //方法
    public double getBase(){
        return base;
    }
    public double getHeight(){
        return height;
    }
}

TriAngleTest

package GouZaoQi;
//编写两个类,TriAngle和TriAngleTest,其中TriAngle类中声明私有的底
//边长base和高height,同时声明公共方法访问私有变量。此外,提供类
//必要的构造器。另一个类中使用这些公共方法,计算三角形的面积。
public class TriAngleTest {
    public static void main(String[] args) {
        TriAngle t1 = new TriAngle(4, 5);
        System.out.println("三角形面积为:"+t1.getBase()*t1.getHeight()/2);
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/2990320.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-23
下一篇 2022-09-23

发表评论

登录后才能评论

评论列表(0条)

保存