第十天0306 多态 abstract抽象 final 接口 内部类

  • 多态
    • 一个事物呈现出不同的状态
    • java中多态的体现
      • 方法的重载(overload)
      • 方法的覆盖(Override)
      • 子类和父类的转型
    • 类型转换
      • 向上转型(上溯造型)
        • 在继承中,子类对象可以转为父类对象
        • 1、会丢失子类所独有的属性和方法
        • 2、覆盖的方法,如果转型之后的父类对象调用被覆盖了的方法,执行的是子类中的重写的方法。
      • 向下转型(下溯造型)
        • 在继承中,父类类型的对象转为子类类型的对象
        • 需要强制转换,不能自动发生
        • 条件:只有经历了向上转型之后的父类对象才能向下转型,且只能转为原来的子类对象。
    • instanceof
      • 判断某个对象是否是某类的对象,如果是,返回true,如果不是返回false。
      • 语法: 对象名 instanceof 类名
    • 多态的三个条件
      • 1、需要有继承关系
      • 2、方法的覆盖(重写)
      • 3、父类的引用指向子类对象(子类对象赋值给父类对象)
  • abstract 抽象
    • 修饰方法,称为抽象方法。
      • 语法:修饰符 abstract 返回值类型 抽象方法名(参数列表);
        • 抽象方法没有方法体,权限修饰符不能为private,final。
    • 修饰类,称为抽象类。
      • 语法: 修饰符 abstract class 类名{}
      • 注:
        • 抽象类不能被实例化,也就是不能创建抽象类的对象。
        • 抽象类中的方法,可以是任意方法。
        • 抽象方法不能使用static修饰
        • 在继承中,子类继承了抽象类,子类必须实现父类(抽象类)中所有的抽象方法。如果不能实现,子类定义为抽象类。
        • 如果一个类中有一个抽象方法,则该类一定要定义为抽象类。
  • final 可以用来修饰变量,类,方法,表示不可改变的
    • 修饰变量
      • 修饰变量,表示变量的值不能改变,不能被重新赋值。
      • 声明常量时,必须同时进行初始化赋值(也可以先声明,然后在所有的构造函数里初始化赋值)
      • static与final连用来定义常量,叫静态常量
        • 命名规范:由一个或多个英文单词组成,所有的字母大写,多个单词之间使用下划线隔开。
    • 修饰方法
      • 表示方法不能被覆盖(Override)
    • 修饰类
      • 表示类不能被继承
  • 接口(interface)
    • 接口是为了解决单一继承的局限性而提供的,子类只能继承一个父类,但可以同时实现多个接口,从而间接的实现了多重继承。
    • 语法: 修饰符 interface 接口名{
      • //
      • }
    • 注:
      • 1、接口不是,不能实例化
      • 2、接口中没有构造方法
      • 3、接口中只能包含static final的常量与抽象方法
        • 接口中的变量即使不写static final,编译器也认为是常量
        • 接口中的方法,不写abstract,编译器也会认为是抽象方法
      • 4、接口里的都是 public
    • 一个类实现接口,使用关键字implements 实现
      • public class 类名 implements 接口名1, 接口名2 {
        •  
      • }
    • 即继承又实现接口
      • public class 类名 extends 父类名 implements 接口名1, 接口名2 {
        •  
      • }
      • 接口的实现类必须实现接口里的所有方法
  • 内部类
    • 在类的内部,定义另外一个类,这个类称为内部类
    • 为什么要使用内部类:
      • 1、内部类对于同一个包下的其他类是不可见的。
      • 2、如果想实现一个接口,但不需要指定名字,可以使用匿名内部类的方式实现。
    • 成员内部类
      • 在类中定义另外一个类,与成员变量和成员方法同级,称为成员内部类。
        • 1、成员内部类可以访问外部类所有属性和方法
        • 2、成员内部类的方法和外部类的方法重名时,内部类会覆盖外部类的方法
        • 3、成员内部类使用四种权限修饰符。
        • 4、外部类中访问内部类的成员变量或者方法,需要通过内部类的对象来访问。
        • 5、创建内部类对象:
          • 外部类.内部类 对象名 = 外部对象.new 内部类();
    • 局部内部类(很少用)
    • 静态内部类
    • 匿名内部类
      • new 父类或接口名(){
        •  
      • }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值