2020.7.25接口-

01_接口

01.1_接口定义:

  1. 是为了定义一些额外扩展的功能,哪些事物想要具备这些功能,可以对该接口进行实现。interface.
  2. 父接口指向子类对象,这也是多态。

01.2_接口不能实例化

  • 接口的子类有两种选择,一种是重写接扣中的所有抽象方法
  • 自己本身就是一个抽象类。

01.3_接口中成员特点

1、接口中的成员变量,全部是公共的静态常量。因为前面存在默认修饰符。public static final

2、接口中不允许存在方法的具体实现(dk1.7).方法的前面存在默认修饰符public abstract

3、接口中没有构造方法。

4、接口不能实例化就是不能new对象。

01.4_类与类,类与接口,接口与接口的关系

类和类之间的关系,继承关系而且是单继承
类和接口之间的关系是实现关系。并且可以多实现
一个类可以实现多个接口
接口和接口之间的关系:继承关系,而且是多继承

注意

  • jdk1.8之后允许给出方法的具体实现,但是这个方法得用default来修饰。
  • 1.8之后,接口中还可以定义静态方法
  • Java中的接口更多是来定义一些规则和规范的,已实现这个扩展性。

01.5_抽象类和接口区分一下

成员区别
	抽象类:
		成员变量:可以变量,也可以常量
		构造方法:有
		成员方法:可以抽象,也可以非抽象
	接口:
		成员变量:只可以常量
		成员方法:只可以抽象	
关系区别
	类与类
		继承,单继承
	类与接口
		实现,单实现,多实现
	接口与接口
		继承,单继承,多继承	
设计理念区别
	抽象类 	被继承体现的是:”is a”的关系。	抽象类中定义的是该继承体系的共性功能。
	接口 	被实现体现的是:”like a”的关系。	接口中定义的是该继承体系的扩展功能。
  • 设计思想;抽象类,它是抽象所有子类的共性功能,并不给出共性功能的具体实现,而是交友子类根据自身进行具体实 现.

  • 接口体现一种扩展sixiang们通常用来定义一些规范和规则,哪些事物想要具备这些功能,可以实现接口,接口只要维护规范规则。

    案例演示:

    package com.Homework.day09.Demo;
    
    public abstract class Animal {
    
        String name;
        int age;
        public abstract void eat();
        public abstract void sleep();
    }
    ------------------
    package com.Homework.day09.Demo;
    //跳高接口
    public interface Jump {
        void jump();
    }
    ----------------------
    package com.Homework.day09.Demo;
    
    public class Tomcat extends Animal{
    
        @Override
        public void eat() {
            System.out.println("小鱼干");
        }
    
        @Override
        public void sleep() {
            System.out.println("站树上睡");
        }
    }
    ------------------
    package com.Homework.day09.Demo;
    
    public class Changecat extends Animal implements Jump{
    
        @Override
        public void eat() {
            System.out.println("猫粮");
        }
    
        @Override
        public void sleep() {
            System.out.println("沙发睡");
        }
    
        @Override
        public void jump() {
            System.out.println("学会了眺高");
        }
    }
    package com.Homework.day09.Demo;
    
    public class Taidog extends Animal{
        @Override
        public void eat() {
            System.out.println("骨头");
        }
    
        @Override
        public void sleep() {
            System.out.println("睡园子");
        }
    }
    ---------------------
    package com.Homework.day09.Demo;
    
    public class Changedog extends Animal implements Jump{
        @Override
        public void eat() {
            System.out.println("吃牛排");
        }
    
        @Override
        public void sleep() {
            System.out.println("睡别墅");
        }
    
        @Override
        public void jump() {
            System.out.println("狗狗学会了跳高");
        }
    }
    -------------
    package com.Homework.day09.Demo;
    
    public class Test {
        public static void main(String[] args) {
            //创建Tom猫的对象
            Animal an=new Tomcat();
            an.name="tomcat";
            an.age=2;
            System.out.println(an.name);
            System.out.println(an.age);
            an.eat();
            an.sleep();
            //创建cat
            Animal an1=new Changecat();
            an1.name="tiemao";
            an1.age=3;
            System.out.println(an1.name);
            System.out.println(an1.age);
            an1.eat();
            an1.sleep();
            //向下转型
            Changecat cc=(Changecat)an1;
            cc.jump();
    
        }
    }
    
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有点。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值