8.Java中的接口

目录结构

⭕1. 接口的声明
⭕2. 接口体中包含常量定义和方法定义两部分
⭕3. 接口多继承
⭕4. 接口变量使用接口/接口回调
⭕5. Fina类
⭕6. 内部类

======================================

使用关键字interface来定义一个接口接口的定义和的定义很相似,分为接口的声明接口体**。

⭕1. 接口的声明

语法:

<修饰符>  interface  <接口名>   //接口声明
{
。。。接口体。。。
}

① 接口名的命名规范与类相同,接口也可以指定所属的 包。
②接口的修饰符可以有以下几种:

  • public:与的public修饰符相同
  • Abstract:通常被省略,因为接口中的方法都是抽象的。
  • Strict:通常并不能限制接口中方法的实现,一般不使用

⭕2. 接口体中包含常量定义方法定义两部分。

  • 接口中的成员都是public的,不能指定其他的访问控制修饰符
  • 常量定义:接口中属性的域默认static final的,必须显示初始化。
  • 方法:只能提供方法头声明,不能提供实现,且除abstract外不能使用其他修饰符。接口中的方法被默认public和abstract的,接口在声明方法时可以省略方法前面的public和abstract关键字,但是类在实现接口方法时,一定要用public来修饰。
interface C {
public abstract int fun(int x,int y);
}
class A implements C {
public int fun(int x,int y){return 2*(x+y);}
}
class B implements C {
public int fun(int x,int y){return x*y;}
}

public class j17 {
public static void main(String args[]){
A a=new A();
B b=new B();
System.out.println("长方形周长="+a.fun(12,8));
System.out.println("长方形面积="+b.fun(12,8));
}
}

输出结果:
                  长方形周长=40
                  长方形面积=96

⭕3. 接口多继承

  • Java之间并不允许多继承只可以单继承和实现多接口
  • 一个类只能extends一个父类可以implements多个接口,用逗号隔开每个接口。
  • 却不能implements(使生效; 贯彻; 执行; 实施)任何接口,会报一个语法错误的。所以Java中的接口是可以多继承的。

JAVA的extends用法

继承

class Animal{
    void eat(){
        System.out.println("Animal eat");
    }
    void sleep(){
        System.out.println("Animal sleep");
    }
    void breathe(){
        System.out.println("Animal breathe");
    }
}
 
class Fish extends Animal{
}
 
public class TestNew {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Animal an = new Animal();
        Fish fn = new Fish();
        
        an.breathe();
        fn.breathe();
    }
}

输出结果:
                  Animal breathe!
                  Animal breathe!

覆盖

在子类中定义一个与父类同名,返回类型,参数类型均相同的一个方法,称为方法的覆盖。方法的覆盖发生在子类与父类之间。另外,可用super提供对父类的访问。


class Animal{
    void eat(){
        System.out.println("Animal eat");
    }
    void sleep(){
        System.out.println("Animal sleep");
    }
    void breathe(){
        System.out.println("Animal breathe");
    }
}
 
class Fish extends Animal{
    void breathe(){
        System.out.println("Fish breathe");
    }
}
 
public class TestNew {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Animal an = new Animal();
        Fish fn = new Fish();
        
        an.breathe();
        fn.breathe();
    }
}

输出结果:
                  Animal breathe
                  Fish breathe

参考文件

⭕4. 接口变量使用接口/接口回调

  • 指把使用某一接口的类创建的对象的引用赋给该接口声明的接口变量中,那么该接口变量就可以调用被类实现的接口中的方法,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法,这一过程对象功能的接口回调。
  • 不同的类在使用同一接口时,可能具有不同点的功能体现,即接口的方法体不必相同,因此,接口回调可能产生不同的行为。
interface ShowMessage{
void show(String s);  //接口中方法默认public
}

class Car implements ShowMessage{
public void show(String s){
System.out.println("Car="+s)
       }
}

class Bicycle implements ShowMessage{
public void show(String s){
System.out.println("Bicycle="+s));
      }
 }

public class j01{
public static void main(String args[]){
ShowMessage dm;     //声明接口变量
dm =new Car();          //接口变量中存放对象的引用
dm.show("奔驰");       //接口回调
dm =new Bicycle();
dm.show("捷安特");
      }
}

输出结果:
                Car = 奔驰
                Bicycle = 捷安特

⭕5. Fina类

一旦一个方法被修饰为fina方法,则这个方法不能被重写,即不允许子类通过重写隐藏继承的fina方法。一般对于一些比较重要且不希望子类进行更改的方法,可以声明为fina方法。可防止子类对父类关键方法的错误重写,增加了代码的安全性和正确性。

  • Final+变量=常量
  • Final+方法:可以被继承,不能隐藏和修改
  • Static+变量=地址不变(公共设施)
  • Static+方法=>类方法(可直接被调用继承)①类.Static方法名
    ②继承 ③隐藏 ④修改

⭕6. 内部类

  • java语言支持在一个类中声明另一个类,即类中可以嵌套类。嵌套在其他类中的类称作内部类,而包含内部类的类成为内部类的外嵌类
  • 内部类同样可以声明自己的方法和成员变量外嵌类把内部类看作是自己的成员。外嵌类的成员变量在内部类中仍然有效,内部类中的方法也可以调用外嵌类中的方法。不过内部类的类体不可以声明类变量和类方法。此外,外嵌类可以用内部类声明对象,作为外嵌类成员
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,816评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,729评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,300评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,780评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,890评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,084评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,151评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,912评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,355评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,666评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,809评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,504评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,150评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,121评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,628评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,724评论 2 351

推荐阅读更多精彩内容

  • 在前段时间整理笔记的时候 就整理到了有关于接口的内容 我觉得还挺重要的 就想着发一下 希望大家可以看看 如果有什么...
    Lonelyice阅读 256评论 0 0
  • 一、接口(Interface) 在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface...
    在远方的你等我阅读 1,427评论 0 2
  • 1、概述 接口表示的是功能的集合,可看做是一种数据类型,接口中全是抽象方法,没有普通方法,是比抽象更抽象的“...
    丛鹏阅读 338评论 0 0
  • 一、抽象类 1、抽象方法 抽象方法只有声明,而没有具体的实现。也就是说没有{}。抽象方法的声明格式为:abstra...
    锈色的栅栏阅读 400评论 0 0
  • 接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。 抽象类表示的是,这个对象是什么。接口表示的是...
    在远方的你等我阅读 206评论 0 1