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型;