(补)java基础第11天面向对象-枚举、抽象与接口

  1. 枚举enum (掌握)
    1.1. 概念:就是一种跟类平级的新结构
    1.2. 作用:就是简化类中全局常量这种代码
    1.3. 语法:
    声明语法:
    public enum 枚举类名字{
    字段(全大写、下划线。简化的就是全局常量)
    实例变量(尽量是private final修饰的)
    实例方法
    类方法
    构造方法 - 枚举中的构造方法默认都是private修饰,不能够是public,protected修饰
    构造方法作用:只能在当前枚举类中使用,就是给当前枚举类对象初始化实例变量的
    }

    1.4. 注意:
    1.4.1. 字段之间用逗号,最后一个字段用分号结束
    1.4.2. 可以写中文字段,但是不建议
    1.4.3. 枚举类都会隐式继承了Enum类(所有枚举类的基类),不能显示写出extends来
    1.4.4. 构造方法必须是private的

    1.5. 使用场景:
    适用于一些取值固定的情况。例如:Vip、性别、QQ状态、星座、季节。。。。

  2. 抽象abstract (重点)
    2.1 抽象方法 abstract 方法
    1. 概念:就是没有任何方法体,且用abstract修饰的方法,()后用分号。
    2. 语法:
    修饰符 abstract 返回值类型 方法名(…);

  3. 作用:从语法层面强制所有的子类重写该方法,保证业务逻辑的合理性
    2.2 抽象类 abstract修饰的类
    1. 概念:抽象类 abstract修饰的类,是一种新结构。
    2. 抽象类作用:就是用来装抽象方法的。
    3. 语法:
    命名一般类名AbstractXxx
    修饰符 abstract class AbstractXxx{
    实例变量
    类变量
    实例方法
    类方法
    构造方法 // 语法规定:抽象类不能创建对象。只能在子类中通过super使用
    抽象方法:修饰符 abstract 返回值类型 方法名(…);
    }
    4. 抽象类的使用场景: 一般作为业务父类(基类,模板类),且业务父类中,
    有的方法需要所有子类强制重写。例如,模板方法模式。
    5. 注意事项:

    1. 语法规定:抽象类不能创建对象。只能在子类中通过super使用
    2. 使用场景
  4. 接口 interface (重点)
    3.1 概念:是一种新结构,跟类平级。是一种标准,只要达到标准就具有这个接口的功能。

    3.2 作用:提高程序的扩展性。因为在java中是单继承,而 多实现(接口)
    3.3 语法:
    3.声明语法:
    public interface I接口名{
    全局常量;//默认都会有一个public static final修饰成员变量 //调用方式:只能是通过: 接口名.常量名;

    抽象方法;

      		//从jdk1.7开始有的
      		public default 返回值类型 方法名(...){  //调用方式:只能是通过  实现类对象.方法名(...);
      
      		}
     		//从jdk1.7开始有的
      		public static 返回值类型 方法名(...){  //调用方式:只能是通过: 接口名.方法名(...);
      
      		}
      	}
    

    3.4 注意事项
    1. 接口命名规则:IXxx
    2. 接口实现类命名规则:接口名Impl
    3. 接口中没有构造方法,也不能new对象
    4. 如果接口中只有一个抽象方法,该接口就是函数式接口,函数式接口可以用@FunctionalInterface
    注解修饰,函数式接口可以使用jdk8新特性lambda表达式。
    5. 只要一个接口中只有一个抽象方法,不管有没有@FunctionalInterface,该接口都是函数式接口。
    6. 接口必须被子类通过implements全部实现其内的抽象方法

    3.5 类、接口关系
    类和类:单继承
    类和接口:多实现
    接口和接口:多继承

     当即需要继承一个类,又需要实现一些接口的时候,亲爹在前,干爹在后。
     
     语法:
     	public (abstract) class (Abstract)Father{}
     	public interface A{}
     	public interface B extends A{}
     	public interface C{}
     	public interface D extends B,C{}//接口和接口:多继承
     	
     	public class Son extends Father implements B,C,D{
     		//必须重写全部的抽象方法
     	}
    

    3.6 接口的使用场景:
    能用接口就不要用抽象类,因为java中都是单继承多实现的。 一般的特殊(扩展、额外)功能
    都是用接口完成的


  1. 内部类(inner class)(了解)

    1. 概念:把一个类定义在另外一个类的内部,嵌套类,宿主类。
      生成内部类名字:外部类$内部类.java

    2. 作用: 就是保护数据,相当于封装

    3. 案例:手机和手机卡

  2. 匿名内部类:Anonymous Inner Class(了解)
    使用一个接口或者抽象类的时候,传统做法是写一个类实现该接口或者是继承该抽象类
    但是,如果当前实现类对象只使用一次,再去设计这个实现类,就会比较麻烦,
    这时候可以使用匿名内部类来简化设计类的工作。其实就是将 设计实现类的工作交给编译器完成。

    匿名内部类语法:
    接口名/抽象类名 父类变量 = new 接口/抽象类(){//这里是多态的方式接受子类对象(这个子类的名字我们不知道,是编译器起的名字)
    //重写全部抽象方法
    }

    父类变量.抽象方法名(…);

发布了18 篇原创文章 · 获赞 1 · 访问量 312

猜你喜欢

转载自blog.csdn.net/weixin_45061669/article/details/104849086
今日推荐