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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李振乐 中级黑马   /  2014-11-9 20:36  /  1627 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

到底什么时候才去定义接口和实现接口?既然实现接口的时候还需要都覆盖接口里的方法,觉得也挺麻烦的,为什么说接口的出现是降低了耦合性,实现功能扩展?我怎么感觉接口只是为了解决JAVA不能多继承而出现的呢??

评分

参与人数 1黑马币 +1 收起 理由
杨佳名 + 1

查看全部评分

4 个回复

倒序浏览
接口屏蔽了具体功能的实现,就像笔记本的usb接口,以前电脑是                    
将鼠标焊接在电脑里的,现在只提供usb接口,如果要实现某个功能,                       
只要将插口插进usb接口。
回复 使用道具 举报
而具体功能的实现则在,具体的实现接口的类中的方法中
回复 使用道具 举报

/*
笔记本电脑使用。
为了扩展笔记本的功能,但日后出现什么功能设备不知道。

定义一个规则,只要日后出现的设备都符合这个规则就可以了。
规则在java中就是接口。

*/
interface USB// 暴露的规则。[定义规则]
{
        public void open();
        public void close();
}

class BookPC
{
        public static void main(String[] args)
        {
                useUSB(new UPan());//功能扩展了。[进行功能拓展]
                useUSB(new UsbMouse());//这样就能够实现一口多用了
        }

        //使用规则。[使用规则]
        public static void useUSB(USB u)//接口类型的引用,用于接收(指向)接口的子类对象。        //USB u= new UPan();                        //这样就能够实现一口多用了
        {
                if(u!=null)
                {
                        u.open();
                        u.close();
                }
        }
}
//一年后。------------------------------
//实现规则。
//这些设备和电脑的耦合性降低了。

class UPan implements USB[规则的实现]
{
        public void open()
        {
                System.out.println("upan open");
        }
        public void close()
        {
                System.out.println("upan close");
        }

}

class UsbMouse  implements USB[规则的实现]
{
        public void open()
        {
                System.out.println("UsbMouse open");
        }
        public void close()
        {
                System.out.println("UsbMouse close");
        }

}

/*
class Mouse
{
}

class BookPC
{
        public static void main(String[] args)
        {
                useMouse(new Mouse());
        }
        public static void useMOuse(Mouse m) //这样只能传入鼠标,而不能传入键盘,U盘
        {
                m.open();
        }
}
*/
回复 使用道具 举报
耦合就是类与类之间的依懒性,耦合性降低了,就是依懒性降低了,接口提供了标准,规则,只要你实现接口里的方法,就可以实现对象的功能扩展,多好!接口确实是为了解决java不能多重继承的!这还不行,已经很好了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马