当前位置:首页 » 编程语言 » java接口实现

java接口实现

发布时间: 2022-04-13 04:41:08

java中的接口怎么实现

举个面积的例子:在java中,定义一个接口,声明计算长方形面积和周长的抽象方法,再用一个类去实现这个接口,再编写一个测试类去使用这个接口。首先,接口必须单独存放,如果我们用eclipse编程的话,它们提示:The public type **** must be defined in its own file,意思是必须要定义在其自己的文件中,所以要为接口文件单独存放起来,举例,我们的接口要实现获到矩形的长,宽,面积,周长,所以定义以下的接口。public interface calrect {
public abstract int calarea();
public abstract int calgirth();
public abstract int getx();
public abstract int gety();
}注意,定义接口就像定义类一样,接口的访问控制符只能用public,用public定义的接口可以被所有的类和包引用,而缺省的则只能被同一个包中的其他类和接口引用,这符合JAVA中访问控制符的一般要求,关于接口再引用其他接口则是后话。以上接口文件名为calrect.java.另外需要指出的是接口中不能给方法给出方法体。接下来,需要定义一个类来实现接口,因为不知道JAVA的内置矩形类是什么名,所以为了安全,将该类定义为RRect,这可以认为是一种安全策略。关于implements,可以参考其他资料。该类引用了接口calrect,所以必须对calrect中的方法一一实现。//定义矩形类 应用接口class RRect implements calrect{private int x;
private int y;public RRect (){
x=3;y=4;
}
public int calarea(){
return x*y;
}
public int calgirth(){
return x*2+y*2;
}
public int getx(){
return x;
}
public int gety(){
return y;
}
}//接下来,定义一个测试类,所谓测试类,我理解为定义一个类,在其定义类RRect的对象,并验证其中的方法,看看是不是可以正常使用//定义Class1类
public class Class1{
RRect rect;
public static void main(String []args){
RRect rect=new RRect();
System.out.println("矩阵的长"+ rect.getx());
System.out.println("矩阵的宽"+ rect.calarea());
System.out.println("矩阵的面积"+ rect.calarea());
System.out.println("矩形的周长 "+rect.calgirth());
}

}运行结果:矩阵的长3
矩阵的宽12
矩阵的面积12
矩形的周长 14注:接口单存放,接口实现类和测试类可以存放在一个文件中

❷ java 什么是接口,如何实现接口

JAVA中被interface修饰的为接口
如public interface onClickListener{
void onClick(int KeyCode);
}
实现接口需要用implements关键字来实现,同时需要复写接口中实现的方法就行
public class Key implements onClickListener{
public void onClick(int KeyCode){
// TODO 这里是实现的代码
}
}

❸ java里实现一个接口的类必须要实现接口里的所有方法吗

一、实现接口或继承抽象类的非抽象子类必须实现接口的所有方法或抽象类的所有抽象方法。

接口中的所有方法均为抽象方法,抽象类中包含非抽象方法和抽象方法。如果一个非抽象子类实现了接口,那么该子类必须实现父接口的所有方法。如果一个非抽象子类继承了抽象类,那么该子类必须实现抽象类的所有抽象方法。


二、实现方案

(一)实现接口

1. 定义接口

/**
*接口:表示人类行为
*/
interfaceBehavor{
/**
*抽象方法:“吃饭”方法
*/
voideat();

/**
*抽象方法:“睡觉”方法
*/
voidsleep();
}


2. 定义子类,实现接口

/**
*子类:表示人类,实现“行为”接口
*/
classPersonimplementsBehavor{
/**
*姓名
*/
protectedStringname=null;

publicPerson(Stringname){
this.name=name;
}

//实现接口的抽象方法
@Override
publicvoideat(){
System.out.println(name+"正在吃饭......");
}

//实现接口的抽象方法
@Override
publicvoidsleep(){
System.out.println(name+"正在睡觉......");
}
}


3. 定义调用类,调用方法

publicclassMain{
publicstaticvoidmain(String[]args){
Personp=newPerson("张三其");
p.eat();
p.sleep();
}
}


(二)继承抽象类

1. 定义抽象类

/**
*抽象类:表示人类
*/
abstractclassPerson{
/**
*姓名
*/
protectedStringname=null;

publicPerson(Stringname){
this.name=name;
}

/**
*抽象方法:吃饭
*/
publicabstractvoideat();

/**
*抽象方法:睡觉
*/
publicabstractvoidsleep();
}


2. 定义子类,继承抽象类

/**
*子类:学生类
*/
classStudentextendsPerson{
publicStudent(Stringname){
super(name);
}

//实现抽象类的抽象方法
@Override
publicvoideat(){
System.out.println("学生"+name+"正在吃饭......");
}

//实现抽象类的抽象方法
@Override
publicvoidsleep(){
System.out.println("学生"+name+"正在吃饭......");
}
}


3. 定义调用类,调用方法

publicclassMain{
publicstaticvoidmain(String[]args){
Personp=newStudent("张三其");
p.eat();
p.sleep();
}
}

❹ JAVA:一个类实现多个接口

//A接口interface A{

public int getA();

}

//B接口

interface B{

public int getB();

}

//实现了某个接口必须实现其全部的方法

public class ImpAB implements A,B{

public int getA() {

return 0;

}

public int getB() {

return 0;

}

}

(4)java接口实现扩展阅读:

功能

在Java语言规范中,一个方法的特征仅包括方法的名字,参数的数目和种类,而不包括方法的返回类型,参数的名字以及所抛出来的异常。

在Java编译器检查方法的重载时,会根据这些条件判断两个方法是否是重载方法。但在Java编译器检查方法的置换时,则会进一步检查两个方法(分处超类型和子类型)的返还类型和抛出的异常是否相同。

接口实现和类继承的规则不同,为了数据的安全,继承时一个类只有一个直接父类,也就是单继承,但是一个类可以实现多个接口,接口弥补了类的不能多继承缺点,继承和接口的双重设计既保持了类的数据安全也变相实现了多继承。

Java接口本身没有任何实现,因为Java接口不涉及表象,而只描述public行为,所以Java接口比Java抽象类更抽象化。但是接口不是类,不能使用new 运算符实例化一个接口。

Java接口的方法只能是抽象的和公开的,Java接口不能有构造器,Java接口可以有public、static和final属性。即接口中的属性可以定义为 public static final int value=5。

接口把方法的特征和方法的实现分割开来。这种分割体现在接口常常代表一个角色,它包装与该角色相关的操作和属性,而实现这个接口的类便是扮演这个角色的演员。一个角色由不同的演员来演,而不同的演员之间除了扮演一个共同的角色之外,并不要求其它的共同之处。

❺ java 接口到底怎么用 到底应该怎么实现

接口是很重要的面向对象方式,继承接口的类不用全部实现定义的接口,可以这么说,我定义了好多接口,某个类可以这么实现这个接口,到另一个类你又想那么实现接口,都是可以的。

或者定义完接口不想管他都可以,虽然很冗余。接口不多了不影响操作。

比如:

定义了一个线性表接口。

public interface Ilist {

public void clear();

public boolean isEmpty();

public int length();

}

我想具体实现的话就建立以下实现类:

import .Ilist;

public class SqList implements Ilist {

private Object[] listElem;// 线性表存储空间

private int curLen;// 线性表的当前长度

// 顺序表的构造函数,构造一个存储空间容量为maxSize的线性表

public SqList(int maxSize) {

curLen = 0;

listElem = new Object[maxSize];

}

public void clear() {

curLen = 0;

}

public boolean isEmpty() {

return curLen == 0;// curLen==0时为true,!=0时为false;

}

public int length() {

return curLen;

}

❻ 用Java怎么样实现接口

新建类的时候,有个interface的选项 你点添加 在对话框里面把你要实现的接口名打上去 可能会有很多提示 不过后面都有包名 你可以根据包名确认你要实现的是那个接口 就OK了如果是类已经建好了 可以在类名后打implements 在打你要实现的接口名然后按alt加问号 就有提示是那个包里面的 你就可以根据包名就导入进来了 然后会提示错误 你点它就把接口里面的所有方法都实现了

❼ Java接口的定义与实现

方法的实现是指可以在{}中写具体的Java代码,接口只能是以()结尾,
public void tree();//方法的定义

//方法的具体实现
public void tree(){
system.out.println("这是一颗松树");

}

❽ java 接口怎么用应该怎么实现

java语言不支持一个类有多个直接的父类(多继承),但可以实现(implements)多个接口,间接的实现了多继承
用法public class test implements 接口名称
当类实现了某个Java接口时,它必须实现接口中的所有抽象方法,否则这个类必须声明为抽象的

比较抽象类与接口
1, 抽象类与接口都位于继承树的上层
相同点
1, 代表系统的抽象层,当一个系统使用一颗继承树上的类时,应该尽量把引用变量声明为继承树的上层抽象类型,这样可以提高两个系统之间的送耦合
2, 都不能被实例化
3, 都包含抽象方法,这些抽象方法用于描述系统能提供哪些服务,但不提供具体的实现
不同点:
1, 在抽象类中可以为部分方法提供默认的实现,从而避免在子类中重复实现它们,这是抽象类的优势,但这一优势限制了多继承,而接口中只能包含抽象方法.由于在抽象类中允许加入具体方法,因此扩展抽象类的功能,即向抽象类中添加具体方法,不会对它的子类造成影响,而对于接口,一旦接口被公布,就必须非常稳定,因为随意在接口中添加抽象方法,会影响到所有的实现类,这些实现类要么实现新增的抽象方法,要么声明为抽象类
2, 一个类只能继承一个直接的父类,这个父类可能是抽象类,但一个类可以实现多个接口,这是接口的优势,但这一优势是以不允许为任何方法提供实现作为代价的三, 为什么Java语言不允许多重继承呢?当子类覆盖父类的实例方法或隐藏父类的成员变量及静态方法时,Java虚拟机采用不同的绑定规则,假如还允许一个类有多个直接的父类,那么会使绑定规则更加复杂,
因此,为了简化系统结构设计和动态绑定机制,Java语言禁止多重继承.而接口中只有抽象方法,没有实例变量和静态方法,只有接口的实现类才会实现接口的抽象方法(接口中的抽象方法是通过类来实现的),因此,一个类即使有多个接口,也不会增加Java虚拟机进行动态绑定的复杂度.因为Java虚拟机永远不会把方法与接口绑定,而只会把方法与它的实现类绑定.四, 使用接口和抽象类的总体原则:
1, 用接口作为系统与外界交互的窗口站在外界使用者(另一个系统)的角度,接口向使用者承诺系统能提供哪些服务,站在系统本身的角度,接口制定系统必须实现哪些服务,接口是系统中最高层次的抽象类型.通过接口交互可以提高两个系统之间的送耦合系统A通过系统B进行交互,是指系统A访问系统B时,把引用变量声明为系统B中的接口类型,该引用变量引用系统B中接口的实现类的实例。
public interface B
{
}
public class C implements B
{
}
public class A
{
}
B a = new C();
2, Java接口本身必须非常稳定,Java接口一旦制定,就不允许随遇更加,否则对外面使用者及系统本身造成影响
3, 用抽象类来定制系统中的扩展点
抽象类来完成部分实现,还要一些功能通过它的子类来实现

❾ Java中 一个类实现了某接口 则必须实现该接口中的所有方法么

不一定,关键要看子类是否是抽象类。
如果子类是非抽象类,则必须实现接口中的所有方法;
如果子类是抽象类,则可以不实现接口中的所有方法,因为抽象类中允许有抽象方法的存在!
1、抽象类定义
抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。通常在编程语句中用 abstract 修饰的类是抽象类。在C++中,含有纯虚拟函数的类称为抽象类,它不能生成对象;在java中,含有抽象方法的类称为抽象类,同样不能生成对象。抽象类是不完整的,它只能用作基类。在面向对象方法中,抽象类主要用来进行类型隐藏和充当全局变量的角色。
2、抽象类特点
1)抽象类不能实例化。
2)抽象类可以包含抽象方法和抽象访问器。
3)不能用 sealed 修饰符修饰抽象类,因为这两个修饰符的含义是相反的。 采用 sealed 修饰符的类无法继承,而 abstract 修饰符要求对类进行继承。
4)从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实际实现。
3、与具体类的比较

1)抽象类不能直接实例化,并且对抽象类使用 new 运算符会导致编译时错误。虽然一些变量和值在编译时的类型可以是抽象的,但是这样的变量和值必须或者为 null,或者含有对非抽象类的实例的引用(此非抽象类是从抽象类派生的)。
2)允许(但不要求)抽象类包含抽象成员。
3)抽象类不能被密封。
4、与接口的比较
1)相同点

a、不能实例化;
b、包含未实现的方法声明;
c、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员)
2)不同点

a、类可以实现无限个接口,但仅能从一个抽象(或任何其他类型)类继承,从抽象类派生的类仍可实现接口,从而得出接口是用来解决多重继承问题的。
b、抽象类当中可以存在非抽象的方法,可接口不能,且它里面的方法只是一个声明必须用public来修饰没有具体实现的方法。
c、抽象类中的成员变量可以被不同的修饰符来修饰,可接口中的成员变量默认的都是静态常量(static final)。
d、抽象类是对象的抽象,然而接口是一种行为规范。

❿ Java中的接口实现

interface iShape2D //定义接口??
{
final double pi=3.14;
abstract void area();
}

class CRectangle implements iShape2D // 实现CRectangle类
{
int width,height;
public CRectangle(int w,int h){
width=w;
height=h;
}
public void area(){ // 定义area()的处理方式
System.out.println("area="+width*height);
}
}

class CCircle implements iShape2D // 实现CCircle类
{
double radius;
public CCircle(double r){
radius=r;
}
public void area(){ // 定义area()的处理方式
System.out.println("area="+pi*radius*radius);
}
}

public class app10_4
{
public static void main(String args[])
{
CRectangle rect=new CRectangle(5,10);
rect.area(); //调用CRectangle类里的area() method

CCircle cir=new CCircle(2.0);
cir.area(); // 调用CCircl类里的area() method
}
}
// app10_5,通过接口类型的变量来访问对象
class app10_5
{
public static void main(String args[])
{
iShape2D var1,var2; // ?派?明接口类型的变量
var1=new CRectangle(5,10); // 将接口类型的变量var1指向新建的对象
var1.area(); // 通过接口var1调用show() method

var2=new CCircle(2.0); // 将接口类型的变量var2指向新建的对象
var2.area(); // 通过接口var2调用show() method
}
}
// app10_6, 实现两个以上的接口??
interface iShape2D // 定义iShape2D接口
{
final double pi=3.14;
abstract void area();
}

interface iColor // 定义iColor接口
{
abstract void setColor(String str);
}

class CCircle implements iShape2D,iColor // 实现iShape2D与iColor接口
{
double radius;
String color;
public CCircle(double r){
radius=r;
}
public void setColor(String str){ // 定义iColor接口里的setColor()
color=str;
System.out.println("color="+color);
}
public void area(){ // 定义iShape2D接口里的area() method
System.out.println("area="+pi*radius*radius);
}
}

public class app10_6
{
public static void main(String args[])
{
CCircle cir;
cir=new CCircle(2.0);
cir.setColor("Blue"); // 调用CCircl类里的setColor() method
cir.area(); // 调用CCircl类里的show() method
}
}

热点内容
c缓存池 发布:2025-01-20 13:23:45 浏览:6
数控编程帅气宝塔图纸 发布:2025-01-20 13:22:15 浏览:871
共享文件夹加密软件 发布:2025-01-20 13:08:41 浏览:40
标识符是怎样存储的 发布:2025-01-20 13:08:39 浏览:894
怎么看安卓大屏什么牌子 发布:2025-01-20 13:08:35 浏览:258
ios开发java 发布:2025-01-20 13:02:42 浏览:881
速腾有侧灯的是哪个配置 发布:2025-01-20 13:01:53 浏览:371
社保用户名和密码都忘记了怎么办 发布:2025-01-20 12:55:55 浏览:321
最优存储形式是什么 发布:2025-01-20 12:51:32 浏览:27
centos编译php7 发布:2025-01-20 12:33:52 浏览:920