public class MyClass{
abstract class MyAbstractClass{
abstract void method();
}
}
我想创建一个从MyAbstractClass这个抽象内部类继承的匿名对象,该如何创建呢?
6 个解决方案
#1
抽象类不能直接实例化,并且对抽象类使用 new 运算符是编译时错误。
你只能实例化MyClass
你只能实例化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.可以避免修改接口而实现同一个类中两种同名方法的调用
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
你只能实例化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.可以避免修改接口而实现同一个类中两种同名方法的调用
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();
}
}