如何在不扩展java中的Abstract类的情况下访问抽象类方法

时间:2017-11-29 16:58:38

标签: java abstract-class

我是java新手,当我在互联网上搜索通过java获取HTTP响应代码时,我开始了解java中的[HttpURLConnection]类。这个类是抽象类,因此我不能实例化这个类。所以我的问题是我有一个URL对象以及如何在我的代码中使用这个抽象类。这可能是非常基本的问题,但你的答案将有助于从根本上理解java。

先谢谢

https://docs.oracle.com/javase/8/docs/api/java/net/HttpURLConnection.html

3 个答案:

答案 0 :(得分:1)

您从HttpURLConnection实例获得URL个对象,该对象代表http:(或https:)协议网址,来自openConnection method。你得到的是对符合URLConnection抽象类定义的接口的对象的引用(但它将是HttpURLConnection子类的实例)。

您通常不需要知道您正在使用的具体课程;你code to an interface定义了你应该用你拥有的东西做的事情。那些东西然后由你引用的对象的具体类完成。

具体说明:

  

是否可以使用Abstract类的用户方法而不使用扩展Abstract Class的类

如果它们是实例方法,则不是。线索就在名字中。 ;-)要使用实例方法,您必须拥有一个实例。要拥有一个实例,您必须具有该实例所属的具体(非抽象)类。

但是又一次:通常你不关心那个类是什么,只是你有一个符合你需要使用的接口的实例。

答案 1 :(得分:0)

您必须使用一个具体类,它是抽象类的子类来调用该方法。

或者,如果您要使用的功能是静态的,您可以直接调用它。下面是一个非常小的例子来展示它。

abstract class SimpleAbstract {
public static String testString() {
    return "You got me";
}

public abstract void doMagic();}
public class AbstractExample {
public static void main(String[] args) {
    System.out.println(SimpleAbstract.testString());        
}}

答案 2 :(得分:0)

以下是初始化抽象类而不扩展它的示例

    abstract class Abstractclass{
       public void someMethod(){
          System.out.println("Hello");
       }
       abstract public void anotherMethod();
    } 
    public class Demo {
       public static void main(String args[])
       { 
         //creation of object .........................

          Abstractclass obj = new Abstractclass(){
              public void anotherMethod(){
                 System.out.println("Hello12222");
                              }
                };    
         obj.anotherMethod();
         obj.someMethod();
       }
    }

输出:Hello12222 Hello