一个类的内部类可以是抽象类吗?

时间:2022-08-07 19:28:39
比如这样:
public class MyClass{
   abstract class MyAbstractClass{
       abstract void method();
   }
}
我想创建一个从MyAbstractClass这个抽象内部类继承的匿名对象,该如何创建呢?

6 个解决方案

#1


抽象类不能直接实例化,并且对抽象类使用 new 运算符是编译时错误。

你只能实例化MyClass

#2


没理解楼主的意思?
是这个吗:

public class MyClass {
abstract class MyAbstractClass {
abstract void method();
}

class MyEntityClass extends MyAbstractClass {
void method(){
System.out.println(1);
}
}
public void ss() {
MyEntityClass m  = new MyEntityClass();
m.method();
}
}

#3


只要知道内部类的作用就知道怎么用了
1.内部类可以很好的实现隐藏,也就是封装性。一般的非内部类,是不允许有 private 与protected权限的,但内部类可以
2.内部类拥有外围类的所有元素的访问权限
3.可是实现多重继承
4.可以避免修改接口而实现同一个类中两种同名方法的调用

#4



public class MyClass{
 abstract class MyAbstractClass{
  abstract void method();
  }
}



public class Test{
public static void main(String[] args){
Object o = getInstance();
o.toString();
}

public static Object getInstance(){
MyClass mc = new MyClass();
Object mac = mc.new MyAbstractClass(){
void method(){
System.out.println("This is MyClass.MyAbstractClass.method()");
}

public String toString(){
method();
return null;
}
};
return mac;
}

}

这个是你要的结果

#5


如果你将内部的类定义为静态的会相对比较容易处理些
静态的如下:


public class Test{
public static void main(String[] args){
MyClass.MyAbstractClass o = getInstance();
o.method();
//o.toString();
}

public static MyClass.MyAbstractClass getInstance(){
MyClass mc = new MyClass();
MyClass.MyAbstractClass mac = new MyClass.MyAbstractClass(){
void method(){
System.out.println("This is MyClass.MyAbstractClass.method()");
}
};
return mac;
}

}

#6


public class Test1 {

abstract class inner{

public abstract void show();
}

class A extends inner{

public  void show(){

System.out.println("in show");
}
}
public static void main(String[] args) {

Test1 test = new Test1();

test.new A().show();
}

}

#1


抽象类不能直接实例化,并且对抽象类使用 new 运算符是编译时错误。

你只能实例化MyClass

#2


没理解楼主的意思?
是这个吗:

public class MyClass {
abstract class MyAbstractClass {
abstract void method();
}

class MyEntityClass extends MyAbstractClass {
void method(){
System.out.println(1);
}
}
public void ss() {
MyEntityClass m  = new MyEntityClass();
m.method();
}
}

#3


只要知道内部类的作用就知道怎么用了
1.内部类可以很好的实现隐藏,也就是封装性。一般的非内部类,是不允许有 private 与protected权限的,但内部类可以
2.内部类拥有外围类的所有元素的访问权限
3.可是实现多重继承
4.可以避免修改接口而实现同一个类中两种同名方法的调用

#4



public class MyClass{
 abstract class MyAbstractClass{
  abstract void method();
  }
}



public class Test{
public static void main(String[] args){
Object o = getInstance();
o.toString();
}

public static Object getInstance(){
MyClass mc = new MyClass();
Object mac = mc.new MyAbstractClass(){
void method(){
System.out.println("This is MyClass.MyAbstractClass.method()");
}

public String toString(){
method();
return null;
}
};
return mac;
}

}

这个是你要的结果

#5


如果你将内部的类定义为静态的会相对比较容易处理些
静态的如下:


public class Test{
public static void main(String[] args){
MyClass.MyAbstractClass o = getInstance();
o.method();
//o.toString();
}

public static MyClass.MyAbstractClass getInstance(){
MyClass mc = new MyClass();
MyClass.MyAbstractClass mac = new MyClass.MyAbstractClass(){
void method(){
System.out.println("This is MyClass.MyAbstractClass.method()");
}
};
return mac;
}

}

#6


public class Test1 {

abstract class inner{

public abstract void show();
}

class A extends inner{

public  void show(){

System.out.println("in show");
}
}
public static void main(String[] args) {

Test1 test = new Test1();

test.new A().show();
}

}