日期:2014-05-20  浏览次数:20728 次

java中继承问题
子类引用父类的问题?????????
A.java//定义一个A类
package   com.java;
public   class   A
{
    public   Connection   getConnection()
    {
        .....return   //定义了数据库连接的一个方法并把回该连接
    }
}
B.java//定义一个B类
package   com.java;
public   class   B   extends   A   //继承A类
{
    public   void   getmethod1()
    {...定义方法1}
    public   getResultSet(StringSQLstr)
    {
        Connection   con=super.getConnection();
        Statement   stm=con.creatStatement();
        ...
    }
}
C.java类的定义
public   class   C   extends   B     //
{
    public   static   void   main()
    {
        ...
        ...
        con.close();//我要在此段中引用con但是我这样引用发生了错误,请问怎样解决?
    }
}
A类是一个数据库连接的类,B类定义了一些常用的方法(查询、更新)   我想在C类是操作B类关闭掉数据库的连接,请高手帮忙看看,????

------解决方案--------------------
main 函数是 static 静态的,对于C类从B类继承下来的东西不能用吧。
你可以在C类里写一个非静态方法,再在main里始例化一个C,再使用方法。
------解决方案--------------------
你可以在class B中定义一个protected Connection字段,在构造函数里调用getConnection()来初始化.
------解决方案--------------------
B.java//定义一个B类
package com.java;
public class B extends A //继承A类
{
public void getmethod1()
{...定义方法1}
public getResultSet(StringSQLstr)
{
Connection con=super.getConnection();
Statement stm=con.creatStatement();
...
}
}


把它改成这样,应该就可以了:

package com.java;
public class B extends A //继承A类
{

Connection con;//此为类变量,类变量在子类中可以继承

public void getmethod1()
{...定义方法1}
public getResultSet(StringSQLstr)
{
con=super.getConnection();
Statement stm=con.creatStatement();
...
}
}

------解决方案--------------------
你应该把 所有的数据库操作写到你一个类里面
上面的继承关系有问题 不符合逻辑
如果非要这样使用 con 的话 可以把 con 设为 protected 类成员变量
c 就可以用了
不过 强烈建议 修改继承关系
------解决方案--------------------
con.close();是不是B类的方法,如果是B类已经定义的方法为什么还要用C类继承B类呢?

如果con.close();是C类中添加的方法,最好不要写在static void main里面.重新些一个方法加进去.

最后A,B,C都是类吧,如果是抽象类,里面的静态方法就可以直接调用方法,如果不是,就要先生成对象,然后再使用响应的方法.还有,如果要使用A类,B类要先import com.java.*C类也一样.
------解决方案--------------------
public class C extends B
C最后还是一个类,不能调用方法.
------解决方案--------------------
我建议不要这样使用继承。
要用的话也应该写在B类实例域:Connection con= null;或是B类域即Static型;