首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OOP -需要构造器吗?

OOP -需要构造器吗?
EN

Stack Overflow用户
提问于 2015-06-19 02:47:04
回答 5查看 224关注 0票数 0

所以我在youtube上看了一段视频,youtuber说:“当你创建‘这个’对象时,你需要将它设置为这个对象的一个新的‘类型’。”

类被称为objectIntro,构造函数是:

代码语言:javascript
复制
                public objectIntro(){
//Object Constructor (Method)
}

所以我的问题是..。

我试着创建一个物体,它基本上告诉我汽车里汽油的水平.

代码语言:javascript
复制
public class car {

double petrolLevel;
double tankSize;

public void refillPetrol(double I){

    if(I>tankSize){
        I = tankSize;
        petrolLevel = petrolLevel + I;
    }
    else{
        petrolLevel = petrolLevel + I;
    }
}

public void fuelConsumption(double O){

    if(O>tankSize){
        O=tankSize;
        petrolLevel = petrolLevel - O;
    }
    else{
        petrolLevel = petrolLevel - O;
    }
}

public String returnPetrolLevel(){
    return String.format("%sL", petrolLevel);
}

}

那么创建对象的类是..。

代码语言:javascript
复制
public class carObject {
public static void main(String[] args){

car object1 = new car();


object1.tankSize = 50;//Litres
object1.petrolLevel = 0;    

object1.refillPetrol(50);
object1.fuelConsumption(20);
object1.returnPetrolLevel();

System.out.printf("Petrol Level: %s", object1.returnPetrolLevel());
}
}

我的问题是,为什么我的对象没有构造函数而工作呢?在汽车类中,我没有一个“公共汽车(){ }”的方法,而youtuber说这是必需的?

有人能澄清这一点吗,我想我没有在写上下文中使用构造函数和方法,有人可以解释一下这些术语的定义,以及一些例子吗?

谢谢

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-06-19 02:50:59

都在Java教程

您不必为类提供任何构造函数,但在这样做时必须小心。编译器自动为没有构造函数的任何类提供无参数的默认构造函数.

此外,惯例是大写你的类名,小写你的方法参数,并使用getter/setter作为成员变量,这些变量通常是私有的。

有时,您实际上可能会注意到,您不能执行new MyClass(),或者很好地不能使用new实例化和对象。这有时会发生,因为编码器提供了一个非arg私有构造函数。例如,当您希望用户使用工厂方法(在该类中提供的)实例化对象时,这是这样做的。但是仍然没有改变构造函数必须存在的事实(这是语言规范的一部分)。

如果您想了解更多关于默认构造函数的信息,可以参考java语言规范

票数 4
EN

Stack Overflow用户

发布于 2015-06-19 02:52:14

如果没有构造函数,则有一个隐式构造函数将所有成员设置为默认值,例如0 for int

构造函数和方法的区别在于构造函数创建和初始化对象,而方法是针对已经存在的对象创建和初始化对象。您可以将构造函数看作是在新创建的对象上调用以某种方式初始化数据的函数。

票数 1
EN

Stack Overflow用户

发布于 2015-06-19 03:07:26

JLS特别注意没有构造函数的类:

如果类不包含构造函数声明,则隐式声明不包含任何形式参数和抛出子句的默认构造函数。

这意味着,如果不为类编写任何构造函数,编译器将为您提供一个构造函数,所有类成员都将被Java虚拟机初始化为默认值。

但是,一旦编写了构造函数,就只能使用这个构造函数来创建类实例。

对于充当数据结构的类来说,这种行为通常是好的,而普通类将有一些构造函数定义为默认的初始化代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30929123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档