目录
前言
接口
声明接口
接口实现
接口继承
实现多个接口时的常量和方法冲突问题
手提包
创建包
导入软件包
Java系统软件包
常用工具包
java.lang软件包
java.util包
最后一次
前言什么是接口呢? 为什么要用接口呢? 我知道Java只允许单一继承。 为了实现多继承,Java引入了接口这一概念。 什么是包装呢? 通常,当我们打开计算机时,我们会查找文件,然后查找文件所在的文件夹。 实际上,包是计算机文件夹的概念,在Java中是我们创建的类使用的接口,其中包含了一些机制,现在让我们开始学习接口和包的知识。
接口在语法上类似于类,是常量和抽象方法的集合。 请注意,接口中的所有成员变量都是常量,而所有成员方法都是没有方法主体的抽象方法。 注意:
接口中只有常量、方法名称; 在接口中定义的方法不需要大括号,不需要写方法体,以分号结尾的接口没有构造方法,不能实例化,只能在类中实现或由另一个接口继承; 的方法只是抽象的、公开的,不能有生成方法。 Java接口可以具有公共、静态和final属性。 接口与类类似。 一个接口有多种方法。 接口文件保存在以. java结尾的文件中,文件名使用接口名称。 接口的字节码文件保存在. class的最后一个文件中。 与接口对应的字节码文件必须位于与包名称匹配的目录结构中。 接口和类之间的区别:接口不能用于实例化对象。 没有构建方法。 接口中的所有方法都必须是抽象方法。 接口不能包含除静态变量和final变量以外的成员变量。 接口不是由类继承的,而是在类中实现的。 支持接口的多继承。 要声明接口,请使用接口关键字声明接口。 声明接口时,关键字接口前面有修饰符public或什么都没有,不能使用protected或private关键字。 接口可以继承多个。 这意味着一个接口可以使用任意数量的父接口。
[修饰符]接口名称[extends父接口名称列表]{ //接口主体。 常量声明和方法声明//常量声明[public] [static] [final]数据类型常量名称=包含常量值; //方法声明//[公共] [ abstract ]返回类型方法名称(参数列表); }各选项的说明:
常数声明:接口可以包含也可以不包含常数声明。 常数的默认值为公共、静态和final类型。 方法声明:接口中的方法只有返回类型和方法名称,没有方法主体。 接口的方法具有公共属性和abstract属性,因此正在声明
方法时,可以省略前面的修饰符public和abstract。例如:
interface Shape{ //定义一个接口Shapedouble PI=3.14; //声明常量PIdouble Mianji(); //声明一个Mianji方法} 接口的实现接口中只包含抽象方法,因此不能像一般类一样使用new运算符产生对象,使用关键字implements连接接口,语法格式为:
class 类名 implements 接口名{ //类主体}例如:
interface Shape{ //定义一个Shape接口double PI=3.14; //声明一个double类型常量PIdouble Mianji(); //声明一个double类型方法Mianji}class Yuan implements Shape{ //声明一个名为Yuan的类并用implements连接接口Shapedouble r=10; //声明一个double类型常量rpublic double Mianji() { //声明一个double类型的公共方法Mianjireturn PI*r*r; //返回PI*r*r的乘积}}public class myfirst {public static void main(String[] args) {Yuan y=new Yuan(); //创建Yuan类的实例对象y System.out.println(y.Mianji()); //打印}}运行结果为:314.0
接口的继承接口也是可以被继承的,用关键字extends,和类的继承相似,语法格式如下:
Interface Interface2 extends Interface1注意:当类实现了一个接口,而该接口继承了另一个接口时,则这个类必须实现这两个接口的所有方法。
实现多个接口时的常量和方法冲突问题当实现接口时,则可以实现多个接口,这时就有可能出现常量或方法名冲突的情况,那该怎样解决呢,在解决这类冲突问题时,如果是常量冲突,则需要在类中使用全限定名(接口名、常量名)明确指定常量所属的接口;如果是方法冲突,则只需要实现一个方法即可。例如:
interface A{ //声明一个接口Afloat PI=3.14f; //定义一个用于表示圆周率的常量PIfloat getArea(); //定义一个用于计算面积的方法getAreafloat getGirth(); //定义一个用于计算周长的方法getGirth}interface B{ //声明一个接口Bfloat PI=3.14158f; //定义一个用于表示圆周率的常量PIfloat getArea(); //定义一个用于计算面积的方法getArea}class C implements A,B{ //声明一个C类并连接接口A,Bprivate float radius; //定义一个私有变量radius表示圆的半径public void Circle(float r) { //声明一个Circle方法,将圆半径初始化为参数r的值radius=r;}public float getArea() { //声明一个实现计算圆面积的方法getAreafloat area=A.PI*radius*radius; //调用A接口中的PI常量return area;}public float getGirth() { //声明一个计算圆周率的方法getGirthfloat circuGirth=2*B.PI*radius; //调用B接口中的PI常量return circuGirth;}}public class myfirst {public static void main(String[] args) {C c=new C(); //创建C类的实例对象cc.Circle(3); //调用实例对象c的Circle并赋值float area=c.getArea(); //调用c对象的getArea方法,获得该对象的面积值System.out.println("圆的面积为:"+area);float girth=c.getGirth(); //调用c对象的getGirth方法,获得该对象的周长System.out.println("圆的周长为:"+girth);}}运行结果为:
圆的面积为:28.26圆的周长为:18.84948 包包的概念:
包是一种将相关类、接口或者其他包组织起来的集合体;有助于避免命名冲突,同一个包中的类名不能重复,不同包中可以有相同的类名。包的创建创建自定义包,语法格式为:
package 包名;注意:
创建了包之后,该文件中定义的任何类将属于指定的包;创建包的语句必须为整个源程序的第一行。package myPack1; //在当前文件夹下创建包(子文件夹myPack1)package myPack2.sun; //在当前文件夹下创建包(子文件夹myPack2),再在其下创建子文件夹sun在eclipse中创建包:在项目上点击右键,单击new下的Package。如果你不创建包,系统会默认生成一个default包。
导入包要使用包中的成员,必须导入包,语法格式为:
import 包名.类名 //导入包中的一个特定类/接口import 包名.* //导入包中所有类和接口 Java的系统包系统包相当于函数库,包中提供了许多方法供用户使用
java.lang:包含所有的基本语言类,如基本数据类型、数学函数、字符串等,默认引入;
java.util:包含有用的实用功能类型,如日期类;
java.io:包含所有的输入输出类;
java.net:包含所有实现网络功能的类;
java.awt:包含图形用户界面设计类;
javax.swing:是java.awt包的扩充,包含更丰富的抽象窗口工具集;
java.applet:包含所有支持小应用程序Java applet的类;
java.awt.image:包含图像处理类。
常用工具包 java.lang包Math类:
Math.pow(double a,double b):返回以a为底,b为指数的幂值;Math.sqrt(double a):返回a的算术平方根;Math.round():采用四舍五入方式取得最接近的整数;Math.random():返回0到1之间的随机小数,要创建一个从x到y的随机数,例如:Math.round(Math.random()*(y-x))+x;java.util包Date类:Date类实际上只是一个包裹类,它包含的是一个长整型数据,表示的是从GMT(格林尼治标准时间)1970年1月1日00:00:00这一刻之后经历的毫秒数。
import java.util.*; //引入java.util包public class myfirst {public static void main(String[] args) {Date d=new Date(); //创建Date实例对象dSystem.out.println(d); //打印当前时间}}运行结果为:
Thu Mar 04 16:37:33 CST 2021 最后好了,关于Java接口和包的知识讲到这里了,谢谢观看!!!
我们下篇文章再见!!!
成功不是将来才有的,而是从决定去做的那一刻起,持续累积而成。