重温Java基础(五)

1.抽象类与接口

1.1.抽象方法,abstract修饰的方法,特点如下,

  • 抽象方法是没有方法体,abstract Double getArea();
  • 抽象方法必须定义在抽象类中
  • 子类必须去覆盖该方法,抽象方法不能是private,不能使用final修饰,不能同时使用static修饰

1.2.抽象类

  • 抽象类是不能直接创建对象的(没有方法体)
  • 抽象类里面可以有抽象方法和非抽象方法,非抽象方法黑子类调用的
  • 子类没有去覆盖抽象方法,把子类也变成抽象类
  • 构造方法不能定义为私有的(子类要继承)
  • 抽象类不能使用final去修饰

1.3.抽象类的命名一般在前面加上Abstract,抽象类必须有子类才有意义

2.接口,是一种规范,使用抽象方法定义一组功能。方法必须被实现。

2.1.接口的命名前面加 I,结尾加上able。接口是特殊的抽象类。class文件,方法前面自动加上public abstract。

  • 接口是没有构造器的,接口不能被创建的。
  • 接口中定义的变量都是全局的静态常量。反编译变量之后可以看到 public static final 
  • 接口中定义的方法都是公共的抽象方法(class文件,方法前面自动加上public abstract)
  • 接口当中可以定义内部类,内部类也是public abstract
  • 类是单继承,接口可以多继承

2.3.接口的实现

  • 在实现类当中,必须覆盖接口中的方法,必须是public的。
  • 接口也是父类,编译的时候看左边,运行的时候看右边。
  • 面向接口编程,多态

2.4.接口和抽象类的区别

  • 相同点
  1. 都是被其它类实现或继承
  2. 都不能被实例化
  3. 都可以定义抽象方法,定义的抽象方法,子类必须覆盖
  • 不同点
  1. 接口中没有构造器,抽象类中有构造器
  2. 抽象类可以有抽象方法和普通方法,接口中只能是抽象方法,不能有普通方法。(带有方法体的是普通方法)
  3. 接口中的变量默认public static final 静态常量
  4. 接口中的方法是public abstract 方法名

3.面向接口编程,把实现类的对象赋值给接口类型的变量(多态)

  • 多态的好处,屏蔽了不同类的之间的实现差异,从而达到通用编程

4.内部类,

  • 增强封装,不允许其他类使用
  • 增加了代码的维护性
  • 内部类可以直接访问外部类的成员

4.1内部类的划分

  • 实例内部类:定义在类中的内部类,没有任何修饰符
  • 静态内部类:static修饰的内部类
  • 局部内部类:定义在方法中的内部类
  • 匿名内部类:属于局部内部类中的一种

4.2.实例内部类,属于对象的内部类,不属于类的,不能用static修饰

  • 使用内部类必须创建外部类
  • 内部类可以直接访问外部类的成员
  • 在内部类中不能有静态成员,内部类是属于外部类的成员

4.3.静态内部类

  • 静态内部类不需要创建外部对象
  • 在静态内部类中,是没有外部类的引用的
  • 静态内部类可以使用外部类的静态成员

4.3.局部内部类

  • 不能使用一些修饰符public,只能在方法中使用
  • 局部内部类不能包含静态变量
  • 使用局部变量的本质是final的

4.4.匿名内部类,没有名字的局部内部类(安卓用的比较多)

  • new 父类的构造器 或者 接口 (){    }
  • 必须要有父类或者实现了接口

5.枚举,表示一个事件的固定状态

  • enum 修饰,枚举是一个特殊的类
  • 枚举不能创建对象,构造器私有化
  • 可以和switch配合使用

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值