相关疑难解决方法(0)

访谈:我们可以实例化抽象类吗?

采访者问:我们可以实例化一个抽象类吗?我说,不,他告诉我 - 错,我们可以.

我对此有点争论.然后他告诉我自己在家里试试.

abstract class my {
    public void mymethod() {
        System.out.print("Abstract");
    }
}

class poly {
    public static void main(String a[]) {
        my m = new my() {};
        m.mymethod();
    }
}
Run Code Online (Sandbox Code Playgroud)

在这里,我正在创建我的类的实例并调用抽象类的方法.有人可以向我解释一下吗?在我的采访中我真的错了吗?

java oop class object abstract

561
推荐指数
10
解决办法
23万
查看次数

"新"表达中的卷曲括号?(例如"new MyClass(){...}")

花括号做什么?

handler1 = new Handler() {

        public void handleMessage() {

       }
};
Run Code Online (Sandbox Code Playgroud)

object = new Class_Name() {};?这种语法只存在于Android或Java上吗?它在Java中被称为什么?谢谢你的帮助.

java syntax android class curly-braces

36
推荐指数
1
解决办法
5275
查看次数

使用任意定义的匿名接口方法

请考虑以下代码:

public static void main(String[] args) {
    File file = new File("C:\\someFile.txt") {
        public void doStuff() {
            // Do some stuff
        }   
    };

    file.doStuff(); // "Cannot resolve method"
}
Run Code Online (Sandbox Code Playgroud)

当我们尝试调用新定义的方法时doStuff(),这是不可能的.原因是它file被声明为类型的对象File而不是我们新的匿名子类的实例.

所以,我的问题是,有没有"好的"方法来实现这种行为?除了显而易见的(只是,正确地宣布类).

java

21
推荐指数
2
解决办法
413
查看次数

从扩展外部类本身的内部类中访问外部类成员

在下面显示的代码片段中,内部类继承外部类本身.

package test;

class TestInnerClass {

    private String value;

    public TestInnerClass(String value) {
        this.value = value;
    }

    private String getValue() {
        return value;
    }

    public void callShowValue() {
        new InnerClass("Another value").showValue();
    }

    private final class InnerClass extends TestInnerClass {

        public InnerClass(String value) {
            super(value);
        }

        public void showValue() {
            System.out.println(getValue());
            System.out.println(value);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)
public final class Test {

    public static void main(String[] args) {
        new TestInnerClass("Initial value").callShowValue();
    }
}
Run Code Online (Sandbox Code Playgroud)

main()方法内的唯一语句(最后一个片段)将值分配给类Initial value的私有字段value,TestInnerClass然后调用该callShowValue() …

java inheritance inner-classes

9
推荐指数
2
解决办法
1万
查看次数

为什么抽象类可以像这样实例化?

我读到Class和Abstract Class之间的主要区别是,抽象类无法实例化,

但我可以为抽象类创建对象

public abstract class Earth {

    abstract void sand();

    void land() {

    }
}
Run Code Online (Sandbox Code Playgroud)

并使用新的关键词我创建了对象,用于抽象

    Earth mEarth = new Earth() {

        @Override
        void sand() {

        }
   };
Run Code Online (Sandbox Code Playgroud)

我有一些问题在Inet上没有正确答案,

1)是新关键字用于实例类?

2)实例只是对象吗?

3)mEarth被称为对象(地球的实例)?

现在我可以调用任何方法(作为回调或值返回) mEarth.sand(); mEarth.land(); 使用地球物体

java oop abstract-class object

3
推荐指数
1
解决办法
164
查看次数

在'新'语句之后,花括号会做什么?

我正在看这个例子,并想知道第一行是做什么的:

private SiteStreamsListener listener = new SiteStreamsListener() {
Run Code Online (Sandbox Code Playgroud)

看起来您可以以这种方式声明其他方法或覆盖方法.例如,我可以做以下事情吗?

ArrayList myList = new ArrayList() {
    @Override String toString()
    {
       <my code here>
    }

    <insert new methods here>
}
Run Code Online (Sandbox Code Playgroud)

java

2
推荐指数
1
解决办法
1660
查看次数