如何在不扩展java中的抽象类的情况下访问抽象类方法
我是java新手,当我在internet上搜索通过java获取HTTP响应代码时,我开始了解java中的如何在不扩展java中的抽象类的情况下访问抽象类方法,java,abstract-class,Java,Abstract Class,我是java新手,当我在internet上搜索通过java获取HTTP响应代码时,我开始了解java中的[HttpURLConnection]类。这个类是抽象类,因此我不能实例化这个类。所以我的问题是我有一个URL对象,以及如何在代码中使用这个抽象类。这可能是一个非常基本的问题,但您的回答将有助于从根本上理解java 提前谢谢 您可以从一个URL实例中获得一个HttpURLConnection对象,该实例表示一个http:(或https:)协议URL,该URL来自它的。返回的是对符合抽象类定义的
[HttpURLConnection]
类。这个类是抽象类,因此我不能实例化这个类。所以我的问题是我有一个URL
对象,以及如何在代码中使用这个抽象类。这可能是一个非常基本的问题,但您的回答将有助于从根本上理解java
提前谢谢
您可以从一个
URL
实例中获得一个HttpURLConnection
对象,该实例表示一个http:
(或https:
)协议URL,该URL来自它的。返回的是对符合抽象类定义的接口的对象的引用(但它将是HttpURLConnection
子类的实例)
您通常不需要了解您正在使用的具体类;你可以用你所拥有的来定义你应该能够做的事情。这些事情然后由您所引用的对象的具体类来完成
请特别注意:
有没有办法在不使用扩展抽象类的类的情况下使用抽象类的方法
如果它们是实例方法,则不会。线索在名称中。;-)若要使用实例方法,必须具有实例。要拥有实例,您必须拥有该实例所属的具体(非抽象)类
但是再次强调:通常你并不关心这个类是什么,只是你有一个符合你需要使用的接口的实例。你不能实例化一个抽象类,你需要一个子类来实现特定的方法 您可以使用匿名类访问其方法,例如:
new HttpURLConnection() { /* here you need to implement many empty methods */ }.getOutputStream();
但对于您的问题,我认为您需要一个真正的HttpURLConnection,它可以被URL对象获取
HttpURLConnection connection = urlObject.openConnection();
connection.setDoInput(true);
connection.setDoOutput(false);
// input = true & output = false means a GET
// input = true & output = true means a POST
connection.connect();
InputStream content = connection.getInputStream();
您必须使用一个具体的类,它是抽象类的子类来调用该方法 或者,如果要使用的函数是静态的,则可以直接调用它。下面是一个很小的例子来说明这一点
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());
}}
下面是一个初始化抽象类而不扩展它的示例
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
获取一个具体子类的实例。我已经更新了Java8链接@SLaks-我的问题是“有没有办法使用抽象类的方法而不使用扩展抽象类的类”输出:Hello12222 HelloIn在上面的代码中,您从抽象类Abstractclass实例化了一个对象。如果你能解释清楚的话,这会很有帮助。在这里,我只是用抽象类对象的初始化来定义抽象函数。当我们在子类中扩展它,然后定义抽象函数时,这就是它所需要的。。。