代码之家  ›  专栏  ›  技术社区  ›  user

如何在java类android中扩展两个库类〔duplicate〕

  •  0
  • user  · 技术社区  · 12 年前

    我想在一个java类中扩展两个库类文件。如何做到这一点。

    2 回复  |  直到 12 年前
        1
  •  0
  •   Community Mohan Dere    9 年前

    你没有给出关于这个问题的更多细节。

    您只能扩展 单一类别 。并实现来自许多来源的接口。

    扩展多个类不可用。

    您可以使用 nested classes inner classes

    class A extends B {
    
     private class C extends D {
    
        // A , B , C , D accessible here 
    
      }
    }
    

    为什么使用嵌套类?

    使用嵌套类的令人信服的原因包括以下几点:

    • 这是一种对只在一个地方使用的类进行逻辑分组的方法:如果一个类只对另一个类有用,那么将其嵌入该类并将两者保持在一起是合乎逻辑的。嵌套这样的“辅助类”可以使它们的包更加精简。
    • 它增加了封装:考虑两个顶级类A和B,其中B需要访问A的成员,否则这些成员将被声明为私有。通过将类B隐藏在类A中,可以将A的成员声明为私有,B可以访问它们。此外,B本身可以对外界隐藏。
    • 它可以产生更可读和更可维护的代码:将小类嵌套在顶级类中会使代码更接近使用位置。
    • when to use nested classes

    你可以找到更多解决方案 link

    编辑

    这是对您评论的回答。您想在内部类中调用外部类的方法。这就是一个例子。

    class Outer {
    void show() {
        System.out.println("inside outter show");
    }
    
    class Inner{
        void show() {
            Outer.this.show();  //this is calling Outer class method into Inner class
            Example e = new Example(); //create object of another class
            e.show(); //call to method
            System.out.println("inside inner show");
        }
    }
    
    public static void main(String[] args) {
        Outer o = new Outer();
        Inner i = o.new Inner();  //create an object of Inner class
        i.show();   //this is calling Inner class method from outside method
    
     }
    }
    
    class Example
    {
        void show()
        {
           System.out.println("inside example show");
        }
    }
    

    输出:

    inside outter show
    inside example show
    inside inner show
    
        2
  •  0
  •   Jony-Y    12 年前

    不幸的是,在JAVA中,您只能扩展一个类,这意味着每个类只能延伸一个类。您可以实现许多接口,但不能进行扩展。

    然而,有一些方法可以超越它,你可以将libs公开,然后将其包括在内,这样你就可以创建一个实例并使用它们的函数,你可以创建一种内部类并将其用于任何你需要的目的。。。

    您还可以创建一个扩展链,如:

    public class A extends Activity
    
    public class B extends A
    

    所以B将同时扩展。。。某种程度上

    当我们还不清楚这个问题的时候,它会给你一个有效的解决方案,你的意思是添加支持库吗?添加SDK?或者真正扩展两个类(这是不可能的)。

    @Aniket给了你一个如何解决这个问题的例子。。。

    希望我能帮忙 对这个坏消息感到抱歉:)