刚学 java 对接口一知半解, 网站找来一个实例,感觉其中 class computer implements usb 好像根本不必要, 为什么不直接在 computer 里面直接写个 USB 方法? 还要弄个接口那么麻烦, 这个例子应该没有很好的提现接口用处, 但是我又不知道到底怎么理解接口的用处, 请大牛们指点.
下面为网上找的例子:
首先我们来实现一个简单的接口的定义。
interface usb {
public void print();
}
在接口中不可以实现函数的方法,也就是不可以如下这样做:
interface usb {
public void print(){
System.out.println("hello world");
};
}
接下来我们用一个类来实现这个接口。也就是一个具体化的过程,如下例:
class computer implements usb {
@Override
public void print() {
// TODO Auto-generated method stub
System.out.println("i am a computer");
}
接下来就可以在主函数中实现这个类了。如下例:
public static void main(String[] args) {
computer computer=new computer();
computer.print();
}
接下来进行继承多个接口。如下例:
interface usb {
public void print();
}
interface call {
public void callyou();
}
下面用类来进行实现。如下例:
class computer implements usb, call {
@Override
public void print() {
// TODO Auto-generated method stub
System.out.println("i am a computer");
}
@Override
public void callyou() {
// TODO Auto-generated method stub
System.out.println("i will call");
}
}
主方法中再实现一下就可以了。
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
看第
5.9章:Why interfaces原文如下:
建议你选一本讲解设计模式的数看看,学习学习你就知道为什么要这么做了。
假设我有需要一个日志类,但是我并不确定日志要如何写入(日志也许会写入到文件里,也可能写入到数据库,并且我需要保证随时切换写入点),那这时候不同的写入方式代码一定是有有所区别的。这时候我们就需要定义多个日志类,
DbLog、FileLog……而在程序中,如果不使用接口,你如何去使用它,难道一旦切换日志就把所有的代码修改一遍吗?当然不是,你只要让DbLog、FileLog……都实现一个接口Log,在程序中使用Log所定义的方法,则我们可以通过传入不同的实例轻松的切换日志写入方式。我的理解是接口是一种规范,可以表示实现了某接口的类一定有某些函数。接口有一个很实用的特性是可以用接口变量引用实现了该接口的对象,也就是说AA类实现了A接口的话,可以这样写:A a=new AA()。试想一下,如果你写了如下的代码给别人用:
void show(A a) {
a.print();
}
你如果想用别人传过来的a对象的print()函数,你怎么确保它这个a对象一定有print()函数?但如果你的A是个接口的话, 则别人想调用你写的show(),一定要写一个实现了A接口,有print函数的类作为参数。也就是说,你写的接口部分地规范了要实现你这个接口的类的代码。