在java和C++中,从构造函数调用被覆盖的方法是不同的。有人能解释一下为什么他们的派单方法不同吗?
我知道C++和Java的设计和发展是不同的。但是当涉及到从构造函数调用可重写的方法时,任何对语言规范为什么故意这样设计的洞察都会有所帮助。
我做这项调查的动机是ErrorProne检查:
下面是返回1的java代码
class Ideone
{
static class Simple {
public int i;
Simple() {
this.i = func();
}
public int f
给定此Java代码,它将输出0和4
class A{
A() { print(); }
void print() { System.out.println("A"); }
}
class B extends A{
int i = Math.round(3.5f);
public static void main(String[] args){
A a = new B();
a.print();
}
void print() { System.out.println(i); }
}
使用相同的C#
我在下面的程序中遇到了一个问题,它有两个类A和B以及类A中的一个方法getObject(),它在类B中被重写,类B扩展了A类。
我从基类构造函数中调用getObject(),我相信它会调用类B中的重写方法,并且在运行时错误是空指针异常,为什么对象没有被初始化,即使它已经初始化了呢?
class A {
Object object = new Object();
public A() {
System.out.println("A Class");
getObject();
}
public void getOb
使用这个程序,我试图读取给定文件夹位置中的所有文件,如果还有一个目录或子文件夹,那么程序也应该能够读取子文件夹中的文件。
这个条件读取所有的文件:- if(listOfFiles[i].isFile()),这个else if(listOfFiles[i].isDirectory())条件告诉你是否有子文件夹。如果有子文件夹,那么我再次调用相同的方法。即:ft.fileChecker(s2);
但是在这一步,它抛出了一个运行时错误。
//Main class
public class FileCounter {
public static void main(String[] arg
我一直在使用java,并学习了一个关于类中默认构造函数的问题。Why does it call super (constructor of Object class.I know it does constructor chaining)?. For what reasons it is required?如果我像这样定义一个类
MyClass
{
public MyClass()
{
}
}
编译器在构造函数中添加超级函数。
public MyClass()
{
super();
}
我已经尝试过搜索和阅读Oracle,但是找不到答案,.w
我有一个关于Java继承的问题。
我有两个类A和B,B类继承了A的:
public class A {
public A() {
System.out.println("Hi!");
}
}
public class B extends A {
public B() {
System.out.println("Bye!");
}
public static void main(String[] args) {
B b = new B();
}
在Java中:
class Base {
public Base() { System.out.println("Base::Base()"); virt(); }
void virt() { System.out.println("Base::virt()"); }
}
class Derived extends Base {
public Derived() { System.out.println("Derived::Derived()"); virt(); }
void virt() { S
我不知道为什么会发生这种情况,它似乎在创建新对象和初始化对象之间处于一个恒定的循环中。
public class App {
Character hero = new Character();
charCreation charCreation = new charCreation();
public static void main(String [] args){
App app = new App();
app.run();
}
void run(){
charCreation.charCreate();
}
我有一个关于java中默认构造函数的问题。
正如我在java中读到的构造器一样,默认构造器将所有实例变量初始化为默认值。但是,如果我们为一个类定义了一个构造函数,那么如果我们希望变量被初始化为它们的默认值,那该怎么办呢?
假设我有2个文件a.java
public class a
{
int x;
public a(int z)
{
if(z > 0)
{
x = z;
}
}
public void get()
{
System.out.prin
在下面的代码中,数据字段的初始化顺序是什么?java对数据成员和成员函数遵循的一般规则是什么?
public class TestClass
{
int j=10;
static int h=5;
public static void main(String[] args)
{
TestClass obj= new TestClass();
}
}
我正在经历一个看似奇怪的问题,虽然我知道这个设计背后可能有一些原因,我想知道为什么会这样。
考虑两个类,Foo和Bar。Bar扩展Foo并重写Foo实现的方法。Foo非常简单:
public class Foo {
public Foo() {
System.out.println("Foo constructor");
someMethod();
}
public void someMethod() {
System.out.println("Foo.someMethod");
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
B b = new B();
public class A
{
static A()
{
Console.WriteLine("Static ctor A");
}
public A()
{
Console.WriteLine("ctor A");
}
}
public
我正在学习有关继承的知识,并且正在使用这个具有超类和子类的简单程序,如下所示。我的问题并不是这个程序特有的;然而,这是我第一次看到这种情况发生的地方,所以我用它作为一个更一般的概念性问题的例子。
为什么简单地实例化类运行构造函数并输出内容?我以前的理解是,实例化类只是创建对象,但它不会做任何事情。
SuperClass1.java
public class SuperClass1 {
public SuperClass1(){
System.out.println("This is the superclass c
查看Linkedlist.java,我观察到重载的构造函数,其中一个包含空的this()。通常,我在默认参数中看到过这种情况。这个()没有对角线有什么用呢?
/**
* Constructs an empty list.
*/
public LinkedList() {
}
/**
* Constructs a list containing the elements of the specified
* collection, in the order they are returned by the collection&
我是一个使用DrJava和JDK8.0编译器的Java初学者,我正在编写一个简单的代码,它创建一个数组一个类,并在另一个类上调用它的长度。我已经回顾了很多关于数组的线程,但是我似乎找不出为什么我的代码总是中断。
我编写了使用一个类工作的相同代码的版本。但是,当我尝试使用两个类运行它时,它会中断:
这是我的一档代码:
public class SingleClass
{
int array[];
public SingleClass()
{
array = new int[5];
System.out.println("Array Length: "
当我运行这段代码时,我一直会收到这个错误,而且我不知道如何修复它。我已经做Java大约3个月了,可能需要一些帮助。基本上,该程序要求用户输入每个员工的薪资和工时。薪酬、工时和员工编号都是将共享相同索引的数组。当用户输入员工的薪资率和小时数时,程序将返回该员工的总薪资。只是这个错误不断出现。请帮帮我!
Exception in thread "main" java.lang.NullPointerException
at chapter.pkg7.lab.Payroll.setPayRate(Payroll.java:41)
at chapter.pkg7.lab
我有一个java类如下所示:
public class MyClass {
public MyClass() {
System.out.println("In Constuctor.");
}
{
System.out.println("Where am I?");
}
public static void main(String[] args) {
new MyClass();
}
}
上述类别的输出如下:
Where am I?
In Constuctor.
我想问您一个对象被初始化的确切时刻是什么时候?
例如,我有一个简单的Java代码:
public class Test {
public static void main(String args[]) {
Student student = new Student();
student.setName("John");
student.setId(123);
}
}
那么,到底什么时候初始化了学生对象呢?它是在执行new Student()时初始化的吗?或者当Student student = new Student()被执行的时
所以我试着去寻找答案,但是对于这个错误信息,我正在为我的问题找到相关的答案。
这就是了。为什么这个代码:
案件1)
public class A {
private final String A;
private final String B;
private final String C = A + B;
public A(String A, String B) {
this.A = A;
this.B = B;
}
}
对于行private final String C = A + B;,它表示以下错误:
java: