Java多态、抽象类、接口、内部类总结

多态

1.多态
1.1 基本概念

 多态主要指同一种事物表现出来的多种形态。

饮料:可乐、雪碧、脉动、乐虎、红牛、…
宠物:狗、猫、鸟、乌龟、鱼、…
人:学生、教师、工人、…

1.2 语法格式

 父类类型 引用变量名 = new 子类类型();

如:

 Person pw = new Worker();
 pw.show();

解析:

编译阶段调用Person类中show方法,在运行阶段调用Worker类中重写以后的show方法

1.3 多态的效果

  1. 当父类的引用指向子类的对象时,父类的引用可以直接调用父类独有的方法;

  2. 当父类的引用指向子类的对象时,父类的引用不可以直接调用子类独有的方法;

  3. 对于父子类都有的非静态成员方法来说,编译阶段调用父类版本,运行阶段
    调用子类重写以后的版本;

  4. 对于父子类都有的静态方法来说,编译和运行阶段调用父类版本,隶属于类层级, 因此与指向的对象无关;

1.4 引用数据类型之间的转换

 (1)引用数据类型之间的转换分为:自动类型转换  和  强制类型转换。
     其中自动类型转换主要指从小范围到大范围之间的转换,也就是子类到父类的转换
     其中强制类型转换主要指从大范围到小范围之间的转换,也就是父类到子类的转换
  (2)引用数据类型之间的转换必须发生在父子类之间,否则编译报错。
  (3)若转换到的目标类型是子类类型但不是该引用真正指向的子类类型,则编译通过,
     运行阶段发生类型转换异常。
  (4)为了避免上述错误的发生,可以使用instanceof进行判断,具体格式如下:
     if(引用变量名 instanceof 数据类型) - 判断引用变量指向的对象是否为后面类型

1.5 多态的意义

多态的实际意义在于可以屏蔽不同子类的差异性实现通用的编程,但可以调用不同的方法带来不同的结果。

抽象类

2.1 抽象方法的概念

 抽象方法就是指不能具体实现的方法,也就是没有方法体并使用abstract关键字修饰



语法格式:
       访问控制符 abstract 返回值类型 方法名称(形参列表);
   如:
       public abstract void cry();

2.2 抽象类的概念

  抽象类就是指不能具体实例化的类,也就是不能创建对象并使用abstract关键字修饰

2.3 注意事项
(1)抽象类中可以有成员变量、构造方法以及成员方法;
(2)抽象类中可以有抽象方法也可以没有抽象方法;
(3)拥有抽象方法的类必须是抽象类,因此严格来说,具有抽象方法并且使用
abstract关键字修饰的类才算真正意义上的抽象类。

2.4 实际意义
抽象类的意义不在于自身创建对象而在于被继承,当一个类继承抽象类后必须重写抽象类中的抽象方法,否则该类也变成抽象类。
也就是说抽象类对子类具有强制性和规范性,因此叫做模板设计模式。

3.接口

3.1 基本概念

  接口就是一种比抽象类还抽象的类,体现为所有成员方法都是抽象方法。

定义类的关键字是class,而定义接口的关键字是interface。
继承类的关键字是extends,而实现接口的关键字是implements。

3.2 类和接口之间的关系

  1. 类和类之间的关系 使用extends关键字表达继承的关系 支持单继承

  2. 类和接口之间的关系 使用implemets关键字表达实现的关系 支持多实现

  3. 接口和接口之间的关系 使用extends关键字表达继承的关系 支持多继承

3.3 抽象类和接口之间的区别(笔试题)
(1)定义抽象类的关键字是abstract class,而定义接口的关键字是interface。
(2)继承抽象类的关键字是extends,而实现接口的关键字是implements。
(3)继承抽象类支持单继承,而实现接口可以多实现。
(4)抽象类中可以有构造方法,而接口中不可以有构造方法。
(5)抽象类中可以有成员变量,而接口中只可以有常量。
(6)抽象类中可以有成员方法,而接口中只可以有抽象方法。
(7)抽象类中增加方法可以不影响子类,而接口中增加方法通常都影响子类。
(8)从jdk1.8开始允许接口中出现非抽象方法,但需要使用default关键字修饰。

4.匿名内部类
4.1 语法格式

接口/父类类型 引用变量名 = new 接口/父类类型(){ 方法的重写 };

4.2 经验的分享

 当接口类型的引用作为方法的形参时,实参的传递方式有两种:
      a.自定义类实现接口,然后创建该类的对象作为实参传递;
      b.使用匿名内部类的语法格式来得到接口类型的引用作为实参传递; 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值