Java之接口&抽象类&注解

接口:interface

  1. 接口是将抽象的行为封装在接口中,供子类重写
  2. 定义:
    1. 对行为(方法)的抽象
    2. 一个类可以实现多个接口
    3. 接口只是对方法进行定义,而一个类中可以有多个接口
  3. 特点:
    1. 接口用 interface 实现
    2. 接口中所有的成员变量都是由 public  static  final 修饰的(默认,可不写)
    3. 接口中的所有方法默认都是 public  abstract 修饰的
    4. 接口没有构造器,构造方法用于创建对象(接口没办法 new  创建对象),但是可以使用多态
    5. 实现接口的类中,必须实现接口中所有的方法,如果不实现接口中所有的方法,那么该类是抽象类
    6. 接口和接口之间可以相互继承
    7. 与继承关系类似,接口与实现类之间存在多态性
  4. 实现:
    1. 只需要对方法的定义
    2. public interface Animal{
          public void jump();
      }
      
      public class Text implements Animal{
          //对接口中的方法进行实现
          public void jump(){\
              
            
              
          }
      }
  5. 注意:子类在继承接口时,强制子类实现就口中的方法

抽象类:abstract

  1. 需要继承使用

  2. 作用:抽象类更多偏向于对模板的设计

  3. 特点:

    1. 由 abstract 修饰的类叫做抽象类,也可使修饰抽象方法

    2. abstract 修饰的抽象方法可以不在抽象类中实现,但子类必须重写并实现该方法

    3. 只有抽象类当中才能有抽象方法,普通类中不能有抽象方法

    4. 抽象类中不一定全是抽象方法,也可以有普通方法,普通方法可以不被子类重写

    5. 抽象类不能被实例化,但是可以使用多态

    6. final 不能和 abstract 同时使用

      1. final 修饰的方法禁止被重写

      2. abstract 修饰的方法要求子类重写

      3. 两者相互冲突

    7. private 修饰的方法子类不可见,abstract 修饰的方法要求重写,两者冲突

    8. 抽象方法不能使用 static

      1. static 是针对类层次

      2. 抽象方法针对的是对象层次

      3. 不能一起使用

    9. 抽象类可以有构造方法

      1. 目的是子类初始化之前先初始化父类

      2. 即在 new 子类构造器(),之前先 new 父类构造器

    10. 子类继承父类之后如果不想实现父类中的抽象方法,那么该类必须是一个抽象类

注解:

  1. 用 @interface 实现:
  2. 作用:
    1. 注解一般用于对程序的说明,就像注释一样
      1. 注释是给人看的,注解是给机器看的
      2. public @interface DemoTest {
            
        }
    2. 让编译器进行编译检查的作用
      1. @Override 注解是重写的意思,子类重写父类方法,但是改动了方法名,所以报错
  3. 格式:
    1. @注解名() 的形式
    2. 如:@SuppressWarnings(value = "unchecked")
  4. 使用位置:
    1. 可以附加在 package、method、field 等上面,相当于给他们添加了额外的辅助信息
    2. 可以通过反射的方式对这些注解进行访问
  5. 注解的类型:
    1. 内置注解:
      1. 定义:JDK 提供,有相供应功能的注解
      2. @Override:修饰方法的注解,表示一个方法重写了父类的方法
      3. @Deprecated:修饰方法、属性、类,表示不鼓励程序员使用这样的元素。通常来讲是被遗弃
      4. @SupperssWarnings:用来一致编译时警告信息
    2. 元注解:
      1. 定义:用于注解的注解(帮助创建注解的注解)
      2. @Target注解:
        1. 表示:用来描述注解的使用范围,即注解可以使用在什么地方,在定义注解时使用这个注解可以更加清晰的知道它的使用范围
        2. TYPE:类,接口
        3. FIELD:成员变量
        4. METHOD:方法
        5. PARAMETER:方法参数
        6. CONSTRUCTOR:构造方法
        7. LOCAL_VARIABLE:局部变量
        8. ANOTATION_TYPE:注解类
        9. PACKAGE:包
        10. TYPE_PARAMRETER:类型参数
        11. TYPE_USE:使用类型的任何地方
      3. @Retention注解:
        1. 表示:这个注解在什么时候还有效,用于描述注解的生命周期
        2. SOURCE:源文件保留
        3. CLASS:编译期保留,默认值
        4. RUNTIME:运行期间保留,可以通过反射去获取注解信息。定义的类一般用这个
      4. @Documented:标注生成 javadoc 的时候被记录了(了解即可)
      5. @Inhertied:使它修饰的注解具有继承性
    3. 实现:
      1. 定义注解:
        @Retention(RetentionPolicy.RUNTIME)     //在运行期间保留
        @Target(ElementType.TYPE)       //作用在类上
        
        public @interface DemoTest {
            String url() default "";    //定义注解中的变量 --->默认值为空
            String name() default "";
            ······
        }
        
      2. 使用:
        @DemoTest(url = "test")
        public class Test{
            
        }
    4. @AnnotatedElement接口:
      1. 所有的域(类、方法、属性、包等)都实现了这个接口,接口中定义了获得注解的方法
      2. 方法:
        1. getAnnotation( 指定类型注解 ):
          1. 如果该元素有指定类型的注解则返回这些注解,否则返回 null
        2. getAnnotations( 指定类型注解):
          1. 如果指定类型注解的注解存在于此元素上,则返回 true,否则返回 false

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值