黑马程序员技术交流社区
标题:
程序运行
[打印本页]
作者:
高薇
时间:
2012-8-19 13:03
标题:
程序运行
/*接口+多态=降低程序的耦合性
需求:数据库的操作
数据是:用户信息
1.连接数据库
JDBC Hibernate
2.操作数据库
增删改查 create read update delete
3.关闭数据库连接
*/
//定义一个接口,对数据库的操作相同(增删改查),但是使用的数据库不确定
interface operateKu
{
public void create(User user);
public void add(User user);
}
class SQL implements operateKu
{
public void create(User user)
{
}
public void add(User user)
{
}
}
class ODBC implements operateKu
{
public void create(User user)
{
}
public void add(User user)
{
}
}
class X8
{
public static void main(String[] args)
{
operateKu ok=new SQL();//这样就可以使用SQL数据库来对数据库进行操作了。父类引用指向子类对象
ok.add(user);
}
}
这个程序中,user是怎样调用的呢?
其他的都明白,只是不明白为什么接口中的参数定为user,在主函数中调用方法时调用的user就会变成子类。
有点晕
作者:
黑马王俊东
时间:
2012-8-19 14:20
没太看明白你要问的问题,你是不是想问,add和create方法接受的参数为什么是User类型?想要向数据库中加入一个人的信息时,可以直接加入(例如:方法可以接受username,password等等),也可以将人抽象为一个类。就如同你抽象的User类。此时方法可以接受一个User的对象,此对象封装了user的信息。这样做更符合面向对象的思想。
根据多态的性质,父类的引用引用了子类的对象时,当此引用调用方法时,如果调用的方法在父类和子类中都存在时,那么引用调用子类的方法。
作者:
霍明波
时间:
2012-8-19 14:27
此题接口是通过ODBC或者SQL等这样的类抽取出来的,所以方法肯定和被抽取的类是一样的,而在类中的方法就是为了操作user的,user也是共性而被抽取,你说的user不是子类,她仅仅是方法中的参数。
在operateku ok = new SQL():中,子类对象是SQL的对象,而不是user,user是SQL对象调用SQL方法中的参数。你理解错了
不知道是 不是你要的答案
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2