接口在开发中的作用
面向接口编程,也就是面向抽象编程,能够降低程序的耦合度,提高程序的扩展力。
啥?为啥不给代码例子?…………
这个东西,只可意会,不可言传。
写得多了自然理解了……
接口的使用离不开多态机制。(接口+多态才可以达到降低耦合度。)
类和类之间的关系
is a(继承)、has a(关联)、like a(实现)
is a:
Cat is a Animal(猫是一个动物)
凡是能够满足is a的表示“继承关系”
A extends B
has a:
He has a Pen(他有一支笔)
凡是能够满足has a关系的表示“关联关系”
关联关系通常以“属性”的形式存在。
like a:
Cooker like a FoodMenu(厨师像一个菜单一样)
凡是能够满足like a关系的表示“实现关系”
实现关系通常是:类实现接口。
A implements B
抽象类和接口有什么区别?
-
抽象类是半抽象的,接口是完全抽象的。
-
抽象类中有构造方法,接口中没有构造方法。
-
接口和接口之间支持多继承,类和类之间只能单继承。
-
一个类可以同时实现多个接口,一个抽象类只能继承一个类(单继承)。
-
接口中只允许出现常量和抽象方法。
-
以后接口使用的比抽象类多。一般抽象类使用的还是少。接口一般都是对“行为”的抽象。
package和import
package
在IDEA工具中,新建package的方法如下:
在输入名字时,若package的名字为
a.b.c
意思是这个包(package)包含了3个文件夹(a和b和c)
如下图所示:
在a包中去编写代码(新建class文件),可以看到在文件最上方有这么一行:
package a;
意思是这个文件在a包中。
值得注意点:
package出现在java源文件第一行。
以后说类名的时候,如果带着包名描述,表示完整类名。
如果没有带包,描述的话,表示简类名。
例如:java.util.Scanner 完整类名。(可以在java文件夹下的util文件夹找到Scanner文件)
Scanner 简类名
关于上述java.util.Scanner 的图片演示
import
import什么时候不需要?
java.lang同包下不需要。
其它一律都需要。
例如在java.lang下有String.java
但是我们用String的时候并没有写java.lang.String,而是直接写String就行。
经过测试,写成java.lang.String也是可以的。
这就说明在java.lang同包下不需要import。
在IDEA中如何使用?
首先要明确,IDEA开发工具是可以自动导入所缺失的包的。
如下图,在没有导入java.util包的情况下,我们调用Scanner
系统会提示我们导入class,点击即可自动导入。
(IDEA万岁!)