A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 高薇 中级黑马   /  2012-8-19 13:03  /  1868 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*接口+多态=降低程序的耦合性
需求:数据库的操作
数据是:用户信息
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就会变成子类。
有点晕

2 个回复

倒序浏览
没太看明白你要问的问题,你是不是想问,add和create方法接受的参数为什么是User类型?想要向数据库中加入一个人的信息时,可以直接加入(例如:方法可以接受username,password等等),也可以将人抽象为一个类。就如同你抽象的User类。此时方法可以接受一个User的对象,此对象封装了user的信息。这样做更符合面向对象的思想。
根据多态的性质,父类的引用引用了子类的对象时,当此引用调用方法时,如果调用的方法在父类和子类中都存在时,那么引用调用子类的方法。
回复 使用道具 举报
此题接口是通过ODBC或者SQL等这样的类抽取出来的,所以方法肯定和被抽取的类是一样的,而在类中的方法就是为了操作user的,user也是共性而被抽取,你说的user不是子类,她仅仅是方法中的参数。
    在operateku ok = new SQL():中,子类对象是SQL的对象,而不是user,user是SQL对象调用SQL方法中的参数。你理解错了
    不知道是 不是你要的答案
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马