`

可不可以实例化一个抽象类?- -

    博客分类:
  • j2ee
阅读更多

用程序自己实现

比如:
public abstract class YourClassName
{
       public abstract Object someMethod(...);
}
在你要有的地方

YourClassName ycn = (YourClassName)java.lang.reflect.Proxy\
        .newProxyInstance(Thread.currentThread().getContextClassLoader(),\
        new Class[]{YourClassName.class},new java.lang.reflect.\
        InvocationHandler(){
                public Object invoke(Object proxy,Method m,Object params[])
                        throws Exception{return null;}
        });
这样就得到了YourClassName的一个实例
只是这个实例没有任何用处,他所有的方法都直接返回

如果要使不是abstract的方法和原来的一样,
那么修改invoke函数,判断m是不是抽象的
不是就调用proxy中的方法(m.invoke(proxy,params))
如果是就返回null

分享到:
评论

相关推荐

    Java实例化一个抽象类对象的方法教程

    总的来说,虽然Java中的抽象类不能直接实例化,但我们可以通过继承并实现其抽象方法,或者利用字节码工具和注解处理器在运行时或编译时动态生成新的类来间接达到实例化抽象类的目的。这样的设计允许我们创建更加灵活...

    abstract抽象类--Eclipse

    抽象类是不能被实例化的,因为它们可能包含一个或多个未实现的方法(即抽象方法)。这些方法只有声明,没有具体实现。定义抽象类的目的是为了提供一种接口,供其子类继承并提供具体的实现。这有助于实现多态性,这是...

    怎样使一个class不能被实例化

    如果子类没有提供所有纯虚函数的具体实现,那么它也将成为一个抽象类,同样无法被实例化。这种设计模式能够帮助开发者更好地组织代码结构,并确保派生类遵循了一定的行为规范。 #### 定义一个抽象基类 在C++中定义...

    C++程序设计基础教程 苏大C++程序设计教程(第二版) 第13章 抽象类(共2页).pptx

    抽象类的一个关键特性是不能直接实例化。试图创建一个抽象类的对象会导致编译错误,因为没有实现所有纯虚函数。抽象类的主要目的是定义接口,供派生类继承和实现。 抽象类和具体类的关系可以这样理解:抽象类定义了...

    抽象类与适配器模式

    抽象类在计算机编程,尤其是面向对象编程中,是一种重要的概念,它用来表示一种不完整的类,其中包含了未实现的方法,通常用于定义一个类族的通用行为。在Java中,抽象类是通过使用`abstract`关键字来标识的。下面将...

    抽象类和抽象方法.pdf

    - 抽象类是一种无法实例化的类,因为它可能缺少足够的信息来创建一个完整的对象。例如,"形状"是一个抽象概念,包括圆形、矩形等具体形状。抽象类中可以定义抽象方法,这些方法在子类中进行具体实现。 2. **声明...

    接口和抽象类使用详细实例源代码

    抽象类是一个不能被实例化的类,它通常包含抽象方法,这些方法没有具体实现,需要子类来完成。抽象类是为了解决部分通用功能的复用,同时允许子类根据需要进行扩展。在Java或C#等语言中,一个类可以继承自一个抽象类...

    C#类、接口、虚方法和抽象方法-抽象类和接口的相同点和区别

    2. 抽象类是一个不完整的类,需要派生类完成其定义,接口则更像一种行为规范。 3. 接口可以被多重实现,而抽象类只能被单一继承。 4. 抽象类常用于紧密相关的类群,接口适用于实现特定功能的松散关联类。 5. 抽象类...

    C#接口抽象类区别实例

    (2) 抽象类是一个不完整的类,需要进一步细化,而接口是一个行为规范。微软的自定义接口总是后带able字段,证明其是表述一类“我能做。。。” (3) 接口可以被多重实现,抽象类只能被单一继承 (4) 抽象类更多的是定义...

    Java抽象类和抽象方法

    抽象类在Java中是一种特殊类型的类,它不能被实例化,即无法通过`new`关键字创建该类的对象。抽象类的主要目的是提供一个基类,以便其他类继承并实现其抽象方法或重写其具体方法。抽象类通过使用`abstract`关键字...

    C#中抽象类和接口的区别.txt

    - 当你需要为一组相关的类提供一个共同的基础,但不希望它们能够直接实例化时,可以使用抽象类。 - 抽象类适用于那些具有共享行为和状态的类,其中一部分行为需要由子类自定义实现的情况。 - **接口的应用**: -...

    Java 抽象类

    抽象类可以包含构造器,用于初始化抽象类中的成员变量,但不能创建抽象类的实例。 8. **匿名内部类与抽象类** 匿名内部类可以实现接口或继承抽象类,而且可以是抽象的,只要它满足不包含抽象方法的条件。 9. **...

    利用Type动态创建类实例(C#反射)可以演变抽象工厂

    抽象工厂模式是一种设计模式,它提供一个创建对象族的接口,但允许子类决定实例化哪一个类。这种模式是工厂模式的一种扩展,适用于当系统需要一组相关或相互依赖的对象时,而这些对象的类可能在编译时未知。通过...

    抽象类和接口 区别分析

    - 定义:抽象类是一种特殊的类,它不能被实例化。它可以包含抽象方法(没有实现的方法)和非抽象方法。 - 特性:抽象类可以拥有构造器、字段、方法等,并且可以定义具体的方法实现。抽象类的主要目的是为其他类...

    Java基础--抽象类

    // 可以实例化Dog类,但不能实例化Animal类 ``` 在Java中,继承抽象类的非抽象子类必须实现父类中的所有抽象方法,否则子类也将变为抽象类,需要使用`abstract`关键字声明。 此外,Java还允许类继承多个抽象类,...

    详细解析Java中抽象类和接口的区别

    1. **抽象类**:抽象类是一种不能被实例化的类,它可以包含抽象方法(没有实现的方法)和具体方法(有实现的方法)。抽象类的主要目的是为子类提供一种共有的基本结构,子类必须实现所有抽象方法才能被实例化。 2....

    抽象类和接口

    抽象类无法被实例化,它存在的主要目的是为子类提供一个公共的基类。在抽象类中,可以包含零个或多个抽象方法,也可以包含非抽象的方法。抽象方法是没有实现体的方法,仅包含方法签名。当一个类包含抽象方法时,这个...

    教学视频-抽象类&接口

    5. **接口与抽象类的区别**:对比两者在使用上的差异,包括继承的数量限制(一个类只能继承一个抽象类,但可以实现多个接口)和成员类型(抽象类可有实例变量,接口则没有)。 6. **适配器模式**:可能会介绍如何...

    C#抽象类与抽象方法

    抽象类是一种特殊的类,它不能被实例化,只能作为其他类的基类。抽象方法则是没有具体实现的方法,其功能必须在派生类中进行实现。 首先,让我们深入理解抽象类。当你创建一个抽象类时,通常是因为你想要定义一个...

Global site tag (gtag.js) - Google Analytics