接口引入与instanceof

接口引入与instanceof

接口
	是这个事物本身不具有的功能,是一种额外的扩展功能
	是所有行为的抽象,面向接口编程,目的是让程序更加易于维护,扩展性更强,接口只定义标准,而非具体实现;
特点
	接口不能实例化(不能直接创建对象)
	接口多态(实例化接口)
		接口名 对象名 = new 接口子实现类名();		(前提:子实现类为具体类)
实现接口
接口子类(实现类) implements 接口名{
	实现接口方法
}
接口的成员特点
	成员变量:只能是常量,存在默认修饰符  public static final
	成员方法(非静态):只能是抽象方法没有方法体
	没有构造方法(子实现类和接口的关系是实现关系)
关系问题
类与类
	继承关系(extends),不支持多继承,可以多层继承
类与接口
	实现关系(implements),一个类继承另一个类的同时,支持多实现多个接口,接口名之间  ,  隔开即可
接口与接口
	继承关系(extends),支持单继承,也支持多继承,也可以多层继承
抽象类和接口的区别(面试题)
成员区别
	抽象类
		成员变量:既可以是自定义常量,也,可以是变量
		成员方法:既可以存在抽象方法,也可以存在非抽象方法
		存在构造方法
	接口
		成员变量:只能是常量	存在默认修饰符:public static final
		成员方法;只能是抽象方法
		没有构造方法
关系区别
	类与类:继承关系,只能单继承
	类与接口:实现关系(implements),一个类继承另一个类的同时,支持多实现多个接口
	接口与接口:继承关系(extends),支持单继承,也支持多继承,也可以多层继承
设计理念区别
	抽象类:有继承关系,抽象类不能创建对象,借助于抽象类多态(子类是具体类),进行实例化;
 		体现的核心思想: "is a"的关系
 	 接口:体现的是事物的一种额外的扩展功能,本身不具备,需要实现接口才能具备这个功能!
        体现的核心思想:"like a"的关系
接口的定义
interface	接口名称{
		全局常量;
		抽象方法;
}
package com.qf.tast;
    public class Test {

            public static void main(String[] args){
                Girl mm = new Girl("老八");
                mm.sleep();
                mm.eat();
                mm.run();
                mm.print();
            }

        interface IEat{
            //public abstrace void eat();
            void eat();	//接口中定义的方法没有修饰符,默认为public abstrace
            //public abstrace final int NUM = 10;
            int NUM =10;
            //在jdk1.8后新特性,可以被所有实现类继承
            public default void print(){
                System.out.println("eat");
            }
        }

        interface IRun{
            void run();
        }

        //接口可以被继承(可以多继承)
        interface ISleep extends IEat,IRun{
            void sleep();
        }

        //具体类实现接口必须实现接口的所有方法
        static class Girl implements ISleep,IEat,IRun{
            private String name;
            public  Girl(String name){
                this.name = name;
            }

            public Girl (){

            }

            public void sleep(){
                System.out.println(name+"爱睡觉");
            }
            public void eat(){
                System.out.println(name +"爱吃");
            }
            public void run(){
                System.out.println(name+"爱跑");
            }

        }
}

接口的概念

	1,接口是一组行为的规范,定义,没有实现
	2,使用接口,可让我们的程序更加利于变化
	3,接口是面向对象编程体系中的思想精髓之一
	4,面向对象设计法则:基于面向接口

接口的使用规则

	1,定义一个接口,使用interface关键字
	2,在一个接口中,只能定义常量,抽象方法,jdk1.8后可以定义默认的实现方法
	3,接口可以继承多个接口, extends x,y
	4,一个具体类实现接口使用implements关键字
	5,一个类可以实现多个接口
	6,抽象类实现接口可以不实现接口的方法
	7,在接口定义的方法没有生声明访问修饰符,默认为public
	8,接口不能有构造方法
	9,接口不能被实例化

面向对象设计原则

	1,对修改关闭,对扩展开放
	2,面向接口编程

instanceof 关键字

父类的实际法则
	通过instanceof关键字,我们可以检查对象的类型,但如果一个父类的子类过多,判断就会很繁琐
		1,父类通常都设计为抽象类或者接口,优先考虑接口,其次抽象类
		2,一个具体的类尽可能不去继承另一个具体类,这样的好处是无需检查对象是否为父类的对象

`

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值