【问题标题】:Inheritance in Java: Extending another class when I've already extended oneJava 中的继承:当我已经扩展了一个类时扩展另一个类
【发布时间】:2023-03-14 07:16:01
【问题描述】:

我必须将 A 类的变量扩展到 B 类。为此我必须写:

public class B extends class A

但就我而言,这个位置已经被“扩展 javax.swing.JFrame”占据了。它看起来像:

public class B extends javax.swing.JFrame

请建议任何将变量从 A 类继承到 B 类的方法。我对这个领域很陌生。所以请解释一下。

【问题讨论】:

  • 你可以试试多级继承。

标签: java swing inheritance jframe extend


【解决方案1】:

要么使用组合,要么在类 B 中创建一个扩展类 A 的内部类。

 class B extends JFrame {
     A a = ... // this is one option

     class C extends A {
         // this is another option 
     }  

 }

【讨论】:

  • 还是说“包 a 不存在”
  • 所有类和变量都是公开的。
  • 还是说“包 a 不存在”
  • 主类中有这个“rs”变量。我想在类名 entryform 中访问它。所以正如你所说,我创建了一个像“main abc = new main();”这样的对象n fr acessinig rs 也写 rs.abc.moveToInsertRow();但它显示错误
【解决方案2】:

Java 不支持多重继承,因此不能同时扩展AJFrame

您可以将A 转换为接口,或将A 的实例嵌入B

【讨论】:

    【解决方案3】:

    你可以这样做:

    public class A extends javax.swing.JFrame{
    
    ...
    
    }
    

    然后

    public class B extends A{
    
    ...
    
    }
    

    【讨论】:

      【解决方案4】:

      使用组合或聚合。详细了解Has-A 关系。

      阅读thisthis

      【讨论】:

        【解决方案5】:

        让 A 类成为接口,B 像这样实现它:

        public interface A{
        public ....[Variables] 
        }
        
        public class B extends javax.swing.JFrame implements A{
           ...
        }
        

        【讨论】:

          【解决方案6】:

          Java 不支持多重继承。但是Java仍然提供了其他方式来实现多重继承。

          1. 检查是否可以使用接口解决,因为您可以实现多个接口。
          2. 使用组合或聚合。从根本上说,我们使用继承来实现代码的可重用性。同样可以使用组合/聚合来实现。
          3. 使用内部类(您可以使用内部类扩展多个类)

          【讨论】:

            猜你喜欢
            • 2016-02-28
            • 2012-12-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-11-06
            • 2011-10-19
            • 2019-05-22
            • 1970-01-01
            相关资源
            最近更新 更多