Day4 抽象类.接口

1.抽象类:1>概念:父类中的方法不确定如何进行{}内方法体的实现,则为抽象方法;

                  2><1>抽象方法:public abstract void eat();

                      <2>抽象类:抽象方法所在的类,必须是抽象类,抽象类中可以有普通的方法

                                           public abstract class Animal{}

                  3>使用抽象类和抽象方法步骤:<1>抽象类里不能直接new抽象对象;

                                                                     <2>必须用一个子类继承父类的所有抽象方法;

                                                                     <3>子类需要覆盖重写父类所有的抽象方法;

                                                                        (子类去掉抽象方法的abstract关键字,补上{})

                                                                     <4>创建子类对象进行使用。

                  4>注意:<1>抽象类不一定有抽象方法,但抽象方法一定在抽象类里;

                                 <2>抽象类里可以有构造方法,是供子类创建对象时,初始化父类成员。

2.抽象类例题(发红包): 

 

 3.接口:1>概念:多个类的公共规范,是一种引用类型,字节码文件仍然为.class;

               2>格式:public interface 接口名称{ //接口内容;}  

               3>包含:<1>抽象方法:- public abstract void methodAbs();

                                         // public abstract不能变,抽象方法后面不能加{}

                                       - 使用步骤:- 接口不能直接使用,要有一个“实现类”来“实现”接口;

                                                              public class 实现类名称 implements 接口名称{...}

                                                            - 接口的实现必须覆盖重写接口中所有的抽象方法,删

                                                              abstract关键字,加{};con+O对抽象方法进行覆盖重写

                                                            - 创建实现类的对象,进行使用;

                            <2>默认方法:public default 返回值类型 方法名称(参数列表){方法体}

                                        // 用来解决接口升级的问题,默认方法会被实现类继承,让实现类的对象直接调用;

                                        默认方法也可以被接口实现类进行覆盖重写;

                            <3>静态方法:- public static 返回值类型 方法名称(参数列表){方法体}

                                                    - 不能通过接口实现类的对象来调用接口中的静态方法;

                                                    - 调用静态方法格式:接口名称.静态方法名(参数);

                            <4>私有方法:普通私有方法:解决多个默认方法之间重复代码的问题;

                                                                             private 返回值类型 方法名称(参数列表){方法体}

                                                    静态私有方法:解决多个静态方法之间重复代码的问题;

                                                                             public static 返回值类型 方法名称(参数列表){方法体}

                            <5>常量:public static finial int num = 10; 

                                            //finial后的内容不可变,且接口中的常量必须赋值,常量这里用大写并使用下划线NULL_OF_CLASS;

                4>小结:<1>接口没有静态代码块;

                               <2>没有构造方法(构造方法可以直接new);

                               <3>一个类的直接父类是唯一的,但一个类可以同时实现多个接口

                                       //public class MyInterfaceImpl implements MyInterfaceA, MyInterfaceB{(overri A B的构造方法)};

                               <4>一个类如果直接父类的方法与接口中的默认方法冲突,优先父类的方法,即继承优先于接口;

                               <5>若实现类实现的多接口中存在重复抽象方法,只需要覆盖重写一次就行;

                               <6>若实现类没有覆盖重写所有接口的所有抽象方法,则实现类必须是一个抽象类;

                               <7>若实现类实现的过接口中,存在重复的默认方法,则实现类要对冲突的默认方法覆盖重写;

            5>类和接口的关系:<1>类之间是单继承的;

                                             <2>类与接口是多实现的,一个类可以实现多接口;

                                             <3>接口之间是多继承的;

                                             <4>多个父接口的抽象方法可以重复;

                                             <5>默认方法重复,子接口则需要带着default对默认方法进行覆盖重写。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值