栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java超基础-接口篇+多态数组(重要)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java超基础-接口篇+多态数组(重要)

java超基础-接口篇+多态数组(重要)

目录侠在此‍

文章目录

java超基础-接口篇+多态数组(重要)

接口接口的应用场景接口的使用细节接口小练习接口VS继承接口多态的特性 多态数组(接口版本)

接口的多态传递现象(就是接口直接的继承关系)接口小练习 多态数组(接口版本)

接口的多态传递现象(就是接口直接的继承关系)接口小练习 结语

接口

接口可以理解为一些规范性的操作处理

接口就是给出一些没有实现的方法,封装到一起,到某个类要使用的时候,再根据具体情况把这些方法写出来,语法

interface 接口名{

//属性

//方法(1.抽象方法2.默认实现方法(default)3.静态方法)

.jdk8后的接口可以有静态方法,默认方法,也就是说接口可以有方法的具体实现了。

};

package day04;
public class BB extends Template{

    public void job(){
        long sum=0;
        for (int i = 0; i < 100000; i++) {
            sum+=i;
        }
    }
}
interface AsA{
    //这里注意一下就是 接口里面的方法都是加了abstract修饰的 我们没有必要去写的
    void hi();
    default void hello(){
        System.out.println("hello");
    }
    static void bye(){
        System.out.println("bye");
    }
}

class 类名 implements 接口{

自己的属性;

自己的方法;

必须实现的接口的抽象方法

};

summary

1.在jdk7.0以前,接口所有方法都没有方法体,即都是抽象方法。

2.jdk8后的接口可以有静态方法,默认方法,也就是说接口可以有方法的具体实现了。

接口的应用场景

大家可能知道接口是个什么东西了,但是就是不知道如何在什么场景去使用这个接口,那么下面就带大家来具体看一下,什么时候我们才会使用接口

现在项目经理让两个程序员 分别写一个类,分别是连接MySQL和Oracle的数据库,所以说,然后项目经理应该写一个接口 去规范一下,然后具体由程序员去完成这个工作,去实现这个操作流程

package day04;
public interface InterfaceDB {//项目经理写的
    void connect();
    void close();
}

接口的实现

package day04;

import javax.jws.soap.SOAPBinding;

public class MysqlDB implements InterfaceDB{
    @Override
    public void connect() {
        System.out.println("进行与MySQL数据库的链接");
    }

    @Override
    public void close() {
        System.out.println("进行与MySQL数据库的断开");
    }
}

给我的感觉就是接口好似是一种认为 分配给你去做,然后你就去完成这个操作,还没有开发经验,很难去实际的操作这些东西。

接口的使用细节

1.接口不能被实例化(因为本质是抽象的,我们定义接口的目的其实是希望其他的类去实现这个接口)

2.接口中的所有方法都是public的,接口中的抽象方法是可以不用被abstract

我们这样证明了其实是public的

3.一个普通类实现该接口,就必须将该接口的所有方法都去实现才行。不能只写一个 可以输入alt+enter进行补全

4.抽象类去实现接口时,可以不实现接口的抽象方法。

5.一个类可以同时实现多个接口

举例说明

interface A{
}
interface B{
}
class D implements A,B{   
}

6.接口中的属性,只能是final的而且只能是被public static final修饰的 下面举例说明

interface B{
    int a=10;//实际上是 public static final int a=10; 必须在一开始就赋值才行
}

7…接口中属性的访问形式:接口名.属性名

8.一个接口 不能继承其他的类,但是可以继承多个接口,因为接口和类直接是实现关系,不是继承关系!!!!!

9.接口的修饰符,只能是public 和default ,这一点和类的修饰符是一样的,下面举例说明

interface a{
    
}
public interface b{
    
}
接口小练习

看一下下面语句都输出什么

package day04;

public class InterfaceDetails01 {
    public static void main(String[] args) {
        B b = new B();
        System.out.println(B.a);//23 
        System.out.println(b.a);//23 因为这个b已经实现了这个方法所以说是可以进行访问的 并且我们知道这个接口里面的属性是public static final修饰的所以说是可以通过类名进行访问的
        System.out.println(A.a);//23
    }
}



interface A{
    int a=23;
}
class B implements A{
    
}
接口VS继承

我们通过抛出一个问题来进行解决处理,首先,引出一个小故事,

有一个小猴子,天生具有爬树的能力,但是有一天,看到鱼儿可以在水中游泳,什么羡慕,希望自己也可以学会,然后又看到鸟儿在控制飞翔,自己也想拥有这种飞翔的能力,所以小猴子问老猴子,自己如何才能学到这些本领,老猴子呵呵一笑,说你把这些接口都实现了,就行啦。

好了 有些扯,现在进入正言,小猴子踏上了学习之路

package day04;
public class ExtendsVSInterface {
    public static void main(String[] args) {
        littleMonkey littleMonkey = new littleMonkey("悟空");
        littleMonkey.fly();
        littleMonkey.swim();
        littleMonkey.climbing();
    }
}
class Monkey{
    private String name;
    public void climbing(){
        System.out.println(name+"天生就会爬树");
    }
    public Monkey(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}
class littleMonkey extends Monkey implements Fly,Swim{//这个时候小猴子已经继承了父亲的爬树能力
    public littleMonkey(String name) {
        super(name);
    }

    @Override
    public void fly() {
        System.out.println(getName()+"通过后天的努力正在学习飞翔");
    }

    @Override
    public void swim() {
        System.out.println(getName()+"通过后天的努力正在学习水下功夫");
    }
}
interface Fly{
    void fly();
}
interface Swim{
    void swim();
}

总结一下 由于我们java里面不存在多继承,但是存在一种局限就是,子类的所拥有的能力就会显得很少,就像我们今天的例子一样,父亲不会,游泳和飞翔,但是子类需要学习,那么这个时候接口就显得尤为重要了 当然这也是我个人的观点存在在里面,希望大家可以参考一下我的理解。

小结一下

接口更加灵活于继承,继承是满足 is a 比如说 小猫is动物,而接口只需要满足 like a的关系才行

like a的意思是指 小猫可以像 鸟儿一样飞翔 小猫可以像 鱼儿一样游泳。

接口的价值在于可以设计好各种规范然后让其他类去实现这些方法,显得更加灵活。

继承价值在与解决代码的复用性和可维护性

接口多态的特性

接口多态的特性就是说,

接口类型的变量可以指向实现了该接口的对象实例

package day04;

public class InterfacePolyParameter {
    public static void main(String[] args) {
        IF if1=new Monster();
        IF if2=new Car();//是不是看出来了 就是 接口类型的变量可以指向实现了该接口的对象实例
    }
}
interface IF{
}
class Monster implements IF{
}
class Car implements IF{   
}

继承体现的多态

父类类型的变量 ,可以指向继承了该父类的对象实例

多态数组(接口版本)

这个的意思就是说我刚刚不是说我们的接口类型的变量 可以指向实现这个接口的对象实例 那么我们定义一个接口类型的数组,

把我们这几个实现这个接口的对象放到这个数组里面去,那么我们就可以进行实现操作了。

下面是代码的演示

package day04;
public class InterfacePolyParameter {
    public static void main(String[] args) {
        //多态数组 因为这个数组里面放了 不同的类 接口类型数组
       Usb[] usbs=new Usb[2];
       usbs[0]=new Phone();
       usbs[1]=new Camera();//既可以放不同类的实例
        for (int i=0;i 
接口的多态传递现象(就是接口直接的继承关系) 

那么我们如何操作使这个代码成立那 我们只需要让IG去继承IF就行

接口小练习

要求我们掌握这个 调用属性 会不会调用父类和接口的属性 切记 接口里面的属性默认是Public static final的

多态数组(接口版本)

这个的意思就是说我刚刚不是说我们的接口类型的变量 可以指向实现这个接口的对象实例 那么我们定义一个接口类型的数组,

把我们这几个实现这个接口的对象放到这个数组里面去,那么我们就可以进行实现操作了。

下面是代码的演示

package day04;
public class InterfacePolyParameter {
    public static void main(String[] args) {
        //多态数组 因为这个数组里面放了 不同的类 接口类型数组
       Usb[] usbs=new Usb[2];
       usbs[0]=new Phone();
       usbs[1]=new Camera();//既可以放不同类的实例
        for (int i=0;i 
接口的多态传递现象(就是接口直接的继承关系) 

那么我们如何操作使这个代码成立那 我们只需要让IG去继承IF就行

接口小练习

要求我们掌握这个 调用属性 会不会调用父类和接口的属性 切记 接口里面的属性默认是Public static final的

结语

 本次分享到这里 如果对大家有帮助 希望大家点赞支持 谢谢啦
加油 xdm

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/708243.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号