黑马程序员技术交流社区

标题: 关于接口的问题 [打印本页]

作者: 李振乐    时间: 2014-11-9 20:36
标题: 关于接口的问题
到底什么时候才去定义接口和实现接口?既然实现接口的时候还需要都覆盖接口里的方法,觉得也挺麻烦的,为什么说接口的出现是降低了耦合性,实现功能扩展?我怎么感觉接口只是为了解决JAVA不能多继承而出现的呢??
作者: zhangyangLengen    时间: 2014-11-10 12:25
接口屏蔽了具体功能的实现,就像笔记本的usb接口,以前电脑是                    
将鼠标焊接在电脑里的,现在只提供usb接口,如果要实现某个功能,                       
只要将插口插进usb接口。
作者: zhangyangLengen    时间: 2014-11-10 12:26
而具体功能的实现则在,具体的实现接口的类中的方法中
作者: zhangyangLengen    时间: 2014-11-10 12:30

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

定义一个规则,只要日后出现的设备都符合这个规则就可以了。
规则在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();
        }
}
*/
作者: 王会涛    时间: 2014-11-10 13:34
耦合就是类与类之间的依懒性,耦合性降低了,就是依懒性降低了,接口提供了标准,规则,只要你实现接口里的方法,就可以实现对象的功能扩展,多好!接口确实是为了解决java不能多重继承的!这还不行,已经很好了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2