javainterface用法(java里的interface接口类怎么用)

本文目录
- java里的interface接口类怎么用
- java里面interface,implement和extends的作用和用法,多谢
- java定义接口时需要使用的关键字是
- 在java中怎样使用interface接口类
- java编写接口用interface和class三个来实现
- java 接口到底怎么用 到底应该怎么实现
- new interface() 用法
java里的interface接口类怎么用
Java不支持多重继承,即一个类只能有一个父类
为了克服单继承的缺点,Java使用了接口,一个类可以实现多个接口
接口是抽象方法和常量值定义的集合,是一种特殊的抽象类
接口中只包含常量和方法的定义,没有变量和方法的实现
接口中的所有方法都是抽象的
接口中成员的访问类型都是public
接口中的变量默认使用public static final标识(可以在定义的时候不加此修饰,系统默认)
接口通过使用关键字interface来声明
格式:interface 接口的名字
接口体:
接口体中包含常量定义和方法定义两部分
接口体中只进行方法的声明,不允许提供方法的实现
方法的定义没有方法体,且用分号结尾
public interface Runner
{
int ID=1;
void run();
}
接口允许被继承,可以用extends继承一个已有的接口
public interface Runner
{
int ID=1;
void run();
}
interface Animal extends Runner
{
void breathe();
}
通过使用implements实现接口中的所有方法
class Fish implements Animal
{
public void run()
{
System.out.println("Fish is swiming");
}
public void breathe()
{
System.out.println("Fish is bubbling");
}
}
如果只需要实现某接口中定义的部分方法,可以通过定义一个抽象类来实现
abstract class LandAnimal implements Animal
{
public void breathe()
{
System.out.println("LandAnimal is breathing");
}
一个类可以继承一个父类的同时,实现一个或多个接口,extends关键字必须位于implements关键字之前
class Student extends Person implements Runner
{
……
public void run()
{
System.out.println("The student is Running");
}
……
}
在类中实现接口的方法时,方法的名字、返回类型、参数个数及类型必须与接口中的完全一致
接口中的方法默认是public 的,所有类在实现接口方法时,一定要用public来修饰
如果接口的方法的返回类型不是void,则在类中实现该接口方法时,方法体至少要有一个return语句
如果是void类型,类体除了两个大括号以外,可以没有任何语句
Java中提供的接口都在相应的包中,通过引入包可以使用Java提供的接口,也可以自己定义接口
一个Java源文件就是由类和接口组成的
接口可以增加很多类都需要实现的功能,不同的类可使用相同的接口,同一个类也可实现多个接口
接口只关心功能,并不关心功能的具体实现,使用相同接口的类不一定有继承关系
public接口:接口声明时,关键字interface前面加上public关键字,可以被任何一个类使用
友好接口类:一个接口不加修饰,友好接口可以被同同一包中的类使用,转载,仅供参考。
java里面interface,implement和extends的作用和用法,多谢
extends可以理解为全盘继承了父类的功能
implements可以理解为为这个类附加一些额外的功能
举个例子,Animal是一个父类,cat,dog,bird,insect都extends了Animal,
但是cat,dog,bird还可以implements比如run,shout这些interface,bird,insect可以implements比如fly这些interface
java定义接口时需要使用的关键字是
interface
java定义接口时需要使用的关键字是interface。Java 接口的定义方式与类基本相同,不过接口定义使用的关键字是 interface,接口的主要用途就是被实现类实现,一个类可以实现一个或多个接口,继承使用 extends 关键字,实现则使用 implements 关键字。因为一个类可以实现多个接口,这也是 Java 为单继承灵活性不足所作的补充。java定义接口时需要使用的关键字是interface。
扩展资料:
Java接口和Java抽象类最大的一个区别,就在于Java抽象类可以提供某些方法的部分实现,而Java接口不可以,这大概就是Java抽象类唯一的优点吧,但这个优点非常有用。
如果向一个抽象类里加入一个新的具体方法时,那么它所有的子类都一下子都得到了这个新方法,而Java接口做不到这一点,如果向一个Java接口里加入一个新方法,所有实现这个接口的类就无法成功通过编译了,因为你必须让每一个类都再实现这个方法才行,这显然是Java接口的缺点。
在java中怎样使用interface接口类
抽象类和接口
什么是接口:接口就是一些方法特征的集合------接口是对抽象的抽象。
什么是抽象类:抽象类对某具体类型的部分实现------抽象类是对具体的抽象。
方法特征包括:方法的名字、参数的数目、参数的类型。不包括:返回类型、参数名字、和抛出的异常。
接口是类型转换的前提、是动态调用的保证。实现某一接口就完成了类型的转换(多重继承);动态调用只关心类型,不关心具体类。
--------------------------------------------------------------------------------------------------------------------------------------
java接口(抽象类)用来声明一个新的类型。
Java设计师应当主要使用接口和抽象类将软件单位与内部和外部耦合起来。
换言之,应当使用java接口和抽象类而不是具体类进行变量的类型声明、参数的类型声明、方法的返回类型声明、以及数据类型的转换等。
当然一个更好的做法是仅仅使用接口,而不是抽象类来做上面这些事情。
在理想的情况下,一个具体类应当只实现接口和抽象类中声明的方法,而不应当给出多余的方法!
接口和抽象类一般作为一个类型等级结构的起点。
接口比抽象类更为抽象所以优先使用接口声明抽象类型!
--------------------------------------------------------------------------------------------------------------------------------------
抽象类和接口
抽象类仅提供一个类的部分实现。抽象类可以有实例变量、以及一个或多个构造函数。抽象类可以同时又抽象方法和具体方法。
一个抽象类不会有实例,它的构造函数不能被客户端用来创建实例。一个抽象类的构造函数可以被其子类调用,从而使一个抽象类的所有子类可以有一些共同的实现,而不同的子类可以在此基础上有不同的实现。
接口比抽象类更为抽象所以有线使用接口声明抽象类!
抽象类是用来继承的。(具体类不是用来继承的,“只要有可能不要从具体类继承---scott meryes”)。
抽象类设计原则:
1. 抽象类应当拥有尽可能多的代码!(公用方法)。代码集中于抽象的方向。
2. 抽象类应当拥有尽可能少的数据!(公共属性)。数据集中于具体的方向。
继承复用的使用条件------- Peter Coad条件
1. 子类是超类的一个特殊种类而不是超类的一个角色!正确区分“Has-A”“Is-A”的关系。
2. 子类之间不应发生替换!?
3. 子类具有扩展超类的责任,而不是置换(Override)掉或注销(Nullify)掉的责任。
4. 只有在分类学角度上有意义时才可以使用继承,不要从具体类继承。
接口和抽象类的区别:
1. 抽象类可以提供某些方法的实现。如果向抽象类中加入一个新的具体的方法,那么所有的子类一下子就得到了这个方法。接口做不到这一点!(这也许是抽象类的唯一优点)。
2. 因java的单根结构限制,只类只能实现一个抽象类类型,而接口类型这无此限制。这使抽象类作为类型定义工具的效能落后于接口。接口是定义混合类型(实现多从继承)的理想工具:用一个
3. 从代码重构的角度上讲,将一个具体类重构成一个接口的实现是很容易的。
研究好这中间的差别很有用的!
java编写接口用interface和class三个来实现
您好,首先定义一个名为MailPost的接口,其中没有定义变量,而是给出两个有关邮寄方法原型。
calPrice()计算邮费并以浮点数形式返回;
post()完成邮寄。
例4.11 接口MailPost。
//MailPost.java
package ch4package;
public interface MailPost{
public float claPrice();
public void post();
}
接下来在包裹Parcel和汇款Remittance的基础上分别派生出可邮寄的包裹和汇款:PostParcel和PostRemit两个子类。
例4.12 子类PostParcel和PostRemit。
---------------------------------
//PostParcel.java
package ch4package;
import java.lang.*;
public class PostParcel extends Parcel implements MailPost{
protected int postage;
protected boolean postable;
protected boolean posted;
PostParcel(Ttring address1,String address2,int w,intp){
//构造方法
super(address1,address2,w);
postage=p;
postable=false;
posted=false;
}
public float calPrice(){//计算邮资
return((float)0.05*weight);
}
public void post(){//邮寄包裹
float price=calPrice();
postable=(price《=postage);
posted=true;
}
public void showMe(){//显示邮件信息
float price=calPrice();
System.out.println("Postable Parcel:");
System.out.println("\tFrom:")+fromAddress+\tTo"
+toAddress);
System.out.println("\tWeigth:)+weigth+"g\tPostage:"
+postage+"Yuan");
if(posted){
if(postable)System.out.println("\tIt has been
posted !");
else{
System.out.println("\tIt needs more postage:");
System.out.println("\tThe current postage
is:"+postage+"Yuan");
System.out.println("\t\tThe price is:"+price+"Yuan");
}
}
}
}
//PostRemit.java
package ch4package;
import java.lang.*;
public class PostRemit exteds Remittance implements MailPost{
protected int postage;
portected boolean postable;
protected boolean posted;
PostRemit(String address1,String address2,int m,int p){
//构造方法
super(address1,address2,m);
postage=p;
postable=false;
posted=false;
}
public float calPrice(){//计算邮资
float price=cealPrice();
postable=(price《=postage);
posted=true;
}
public void showMe(){//显示邮件信息
float price=calPrice();
System.out.println("Postable Remit:");
System.out.println("\tFrom:"+fromAddress+"\tTo:"
+toAddress);
System.out.println("\tMoney:"+money+"Yuan"+"\tPostage:"
+postage+"Yuan");
if(posted){
if(postable)System.out.println("\tIt has been
posted!");
else{
System.out.println("\tIt needs more postage:");
System.out.println("\t\tThe current postage is:"
+postage+"Yuan");
System.out.println("\t\tThe price is:"
+price+"Yuan");
}
}
}
}
---------------------------------
这两个类都实现了接口MailPost。由于两个类非常相似,我们仍然重点讲解其中一个:类PostParce。
PostParcel仍是包ch4package中的一员,它是类Parcel的子类(extends Parcel),又实现了接口MailPost(implements MailPost):
public class PostParcel extends Parcel implements MailPost
在Parcel的基础上,它新增加了三个变量:
postage,posted,postable
其中整型的postage用来记录邮寄人提供的邮资,布尔型的posted和postable分别用来记录是否被尝试邮寄过以及邮寄是束成功。在PostParcel的构造方法中,第9行语句
super(address1,address2,w);
调用了它的父类Parcel的构造方法,设定它从Parcel中继承的变量寄出地址、寄达地址和重量的初值。这就是我们在前面提到过的super变量在构造方法中的用途:调用父类的相应构造方法。这样做的一个好处是可以重用父类的代码,然后PostParcel就只需设定邮资,并将posted和postable初值都置为false。
PostParcel和PostRemit都实现了接口MailPost,国而在它们的定义中,都必须给出方法calPrice()和post()的具体实现。在PostParcel中,为了简单起见,邮费只是根据重量每克收到0.05元,而不考虑寄达的距离,如语句第15行:
return ((float)0.05*weight);
在post()方法中,将计算所得邮资与瑞有邮费加以比较,若邮费已够将postable设为true,包裹可邮寄;否则postable为false,包裹不可邮寄。无论postable取值如何,都已试图邮寄,所以将posted置为true。处理过程见第18行至20行。
最后一个方法是showMe()。在这里,PostParcel重写(Overriding)了它的父类Parcel中的同名方法。当包裹尚未被试图邮寄过,则在基本信息后附加有关的邮寄信息,若未邮寄成功,给出所需最费提示。
PostRemit类的基本构成与PostParcel是一致的,读者可以自己试着读懂它的源文件。
在包ch4package中,类Mails,Parcel,Remittance以及ShowMails都无需改动,只有最后的可执行类Show需要相应的修改。它的源程序如下。
java 接口到底怎么用 到底应该怎么实现
接口是很重要的面向对象方式,继承接口的类不用全部实现定义的接口,可以这么说,我定义了好多接口,某个类可以这么实现这个接口,到另一个类你又想那么实现接口,都是可以的。
或者定义完接口不想管他都可以,虽然很冗余。接口不多了不影响操作。
比如:
定义了一个线性表接口。
public interface Ilist {
public void clear();
public boolean isEmpty();
public int length();
}
我想具体实现的话就建立以下实现类:
import dao.Ilist;
public class SqList implements Ilist {
private Object listElem;// 线性表存储空间
private int curLen;// 线性表的当前长度
// 顺序表的构造函数,构造一个存储空间容量为maxSize的线性表
public SqList(int maxSize) {
curLen = 0;
listElem = new Object;
}
public void clear() {
curLen = 0;
}
public boolean isEmpty() {
return curLen == 0;// curLen==0时为true,!=0时为false;
}
public int length() {
return curLen;
}
new interface() 用法
这是JAVA中匿名内部类的用法.从你所给出的程序中第一个{到最后的},此部分就是匿名内部类,它没有类名,却是实现了Comparator接口。
你给的这个例子,是应用在语句中的匿名内部类,JAVA语法对这种用法的格式要求是:
new 接口或抽象父类名(){//匿名内部类的定义部分}
更详细的内容建议你搜索“JAVA 内部类”。

更多文章:
jquery动态添加表格行(如何通过jquery动态给表格添加一行)
2026年10月23日 00:30
cmake命令行参数(CMake (三)cmake 在工程中的用法)
2026年10月23日 00:00
linux数据备份命令(Linux系统下常用的数据备份方法有哪些)
2026年10月22日 23:20
executequery返回值(ExecuteQuery(sql)的返回值)
2026年10月22日 23:00
舍曲林吃了一周越来越严重(我母亲77岁,服用舍曲林一周,开始半片,4天后改为1片,第三天开始失眠,第四天出现乏力、食欲下降,)
2026年10月22日 21:00



