我们能用 Java 实例化一个抽象类吗?
原文:https://www . geesforgeks . org/can-we-instance-a-abstract-class-in-Java/
抽象类我们听说过,抽象类是可以有抽象方法,不能实例化的类。我们不能在 Java 中实例化抽象类,因为它是抽象的,不完整,因此不能使用。
例 1
Java 语言(一种计算机语言,尤用于创建网站)
// Java program to demonstrate abstract class
// cannot have instance
public abstract class ClassOne {
public void printSomething()
{
System.out.println("Hello in abstract class");
}
}
class CreateClassOne {
public static void main(String[] args)
{
// instance of abstract
// class "ClassOne"
ClassOne obj = new ClassOne();
}
}
输出
prog.java:17: error: ClassOne is abstract; cannot be instantiated
ClassOne obj = new ClassOne();
^
1 error
例 2
Java 语言(一种计算机语言,尤用于创建网站)
// Java code to demonstrate
// Anonymous class
public abstract class ClassOne {
public void printSomething()
{
System.out.println("Hello in abstract class");
}
}
class InheritClassOne {
public static void main(String[] args)
{
// obj points to anonymous subclass
ClassOne obj = new ClassOne() {};
// calls the implementation
// provided by ClassOne
obj.printSomething();
}
}
Output
Hello in abstract class
这里是抽象类实例化! 但这不可能!
是的,答案仍然是一样的,抽象类不能被实例化,在第二个例子中,类 1 的对象没有被创建,而是抽象类的一个匿名子类的实例。然后你调用方法 printSomething() 在抽象类引用上指向子类对象 obj。当你在创建第二类对象时添加了 { } ,编译器将其作为匿名类,其中 { } 表示匿名类的主体。
例 1
Java 语言(一种计算机语言,尤用于创建网站)
// java program to demonstrate anonymous class
interface NewClass {
public void show();
}
class AnonymousClassExample {
public static void main(String[] args)
{
// nc points to anonymous class inside
// the {}
NewClass nc = new NewClass() {
public void show()
{
System.out.println(
"This is an anonymous class implementing interface");
}
};
// calls the implementation
// method of anonymous class
nc.show();
}
}
Output
This is an anonymous class implementing interface
在这个例子中,接口没有被实例化,但是一个匿名类正在实现接口 New Class。现在,您可能已经理解了第二个示例是如何工作的,其中创建了一个匿名子类,或者抽象类是由抽象类实现的,而不是抽象类实例化。
例 2
Java 语言(一种计算机语言,尤用于创建网站)
// Anonymous class implementing abstract class
public abstract class ClassOne {
public ClassOne()
{
System.out.println(
"Anonymous(Unnamed) Subclass object Created");
}
public void printSomething()
{
System.out.println(
"Hello,in abstract class:printSomething method");
}
public abstract void implementMethod();
}
class AnonymousClassExample {
public static void main(String[] args)
{
// anonymous class
ClassOne obj = new ClassOne() {
@Override public void implementMethod()
{
System.out.println(
"Implemented abstract method in anonymous class");
}
};
// calls abstract class implementation
obj.printSomething();
// calls anonymous class implementation
obj.implementMethod();
}
}
Output
Anonymous(Unnamed) Subclass object Created
Hello,in abstract class:printSomething method
Implemented abstract method in anonymous class
版权属于:月萌API www.moonapi.com,转载请注明出处