ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java--接口

2022-04-29 18:32:57  阅读:114  来源: 互联网

标签:java area -- 接口 实现 Shape1 抽象类 public


一、接口的定义

1、使用interface关键字修饰的是接口,但接口不是类,接口是特殊的抽象类;

2、适用性:表示一组行为的抽象,当多个类之间存在行为上的共性时,我们可以用接口进行表示;

3、是一种引用数据类型,只能放抽象方法和常量;

4、接口不能被创建对象,所以需要子类来进行重写接口中的功能。

二、接口的实现

  • 接口实现需要实现类实现接口中没有被实现的方法
  • 使用implements关键字实现接口,必须重写接口中的所有的抽象方法
  • 一个类是可以实现多个接口的,若想实现个多个接口,每个接口名中间用逗号隔开
  • 接口和接口之间可以继承,接口A继承接口B,若C类实现了接口A,同时必须重写实现接口A继承过来的抽象方法。
 1 public interface Shape1 { 
 2     public int A = 1;//默认为常量 
 3     public void area();//默认为抽象方法 
 4 }
 5 class CircleImp implements Shape1{ 
 6     @Override public void area() { 
 7         System.out.println(4*4*3.14); 
 8     } 
 9 }
10 class SquareImp implements Shape1{ 
11     @Override public void area() { 
12         System.out.println(4*4); 
13     } 
14 }

• 接口可以作为类型指向实现类对象,调用时不同实现类的实现方法

public class TestInterface {
    public static void main(String[] args) { 
        //Shape1 s = new Shape1();//Cannot instantiate the type Shape1 
        CircleImp ci = new CircleImp(); 
        ci.area(); 
        SquareImp si = new SquareImp(); 
        si.area();
        //接口类型指向不同实现类对象 
        Shape1 s = new CircleImp(); 
        s.area();//计算圆面积 
        Shape1 s1 = new SquareImp(); 
        s1.area();//计算正方形面积 
    } 
}

三、接口的继承

  • 接口之间可以有继承关系,但实现类实现某一接口时,必须实现所有继承关系之间的抽象方法;
  • 一个类可以实现多个接口,同样也必须实现多个接口中定义的抽象方法。

四、接口和抽象类的区别

相同点:

  1. 都不能被实例化;
  2. 接口的实现类或者抽象类的子类都只有实现了接口或抽象类中的方法之后才能被实例化。

不同点:

  1. 接口只有定义,不能有方法的实现,java 1.8中可以定义default方法体,而抽象类可以有定义与实现,方法可以在抽象类中实现;
  2. 实现接口的关键字为implements,继承抽象类的关键字为extends。一个类可以实现多个接口,但一个类只能继承一个抽象类。所以,使用接口可以间接地实现多重继承。
  3. 接口强调特定功能的实现,而抽象类强调所属关系。
  4. 接口成员变量默认为public static final,必须赋初值,不能被修改,其所有的成员方法都是public abstract.
  5. 抽象类中成员变量默认default,可以在子类中被重新定义,也可以被重新赋值;
  6. 抽象方法被abstract修饰,不能被private、static、synchronized和native等修饰,必须以分号结尾,不带花括号。
 

标签:java,area,--,接口,实现,Shape1,抽象类,public
来源: https://www.cnblogs.com/lym1111/p/16207689.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有