抽象类与多态

本文深入探讨了抽象类的概念,包括抽象类与抽象方法的使用规则,对比了抽象类与普通类的区别,并详细解析了多态的概念及其在Java中的应用,如向上转型和向下转型的使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1:抽象类与抽象方法的使用:

抽象类中可以没有抽象方法,但包含了抽象方法的类必须被定义为抽象类
如果子类没有实现父类的所有抽象方法,子类必须被定义为抽象类
没有抽象构造方法,也没有抽象静态方法
抽象类中可以有非抽象的构造方法,创建子类的实例时可能调用

 

 

2:抽象类与普通类的区别

 

抽象类和普通类有什么区别?
抽象类使用abstract关键字修饰。
抽象类不能实例化,但可以创建一个引用变量,其类型是一个抽象类,指向非抽象的子类实例。
抽象类中可以有抽象方法 也可以么有抽象方法。

普通类能够实例化。
普通类中一定不能含有抽象方法。
------------------------------------------

抽象方法与普通方法的区别:
抽象方法没有方法体。
普通方法有方法体。

 

抽象类规则:
1 含有抽象方法的类是抽象类,抽象类不一定含有抽象方法。
2 如果一个类继承了抽象类,实现抽象类中的方法。 如果类不想实现抽象方法,这个类也是一个抽象类。
3 抽象类不能实例化

 

3:介绍多态

(1)什么是多态?

同一种事物,由于条件不同,产生的结果也不同;多态:同一个引用类型,使用不同的实例而执行不同操作

(2)向上转型 向下转型

向上转型: 将一个子类对象赋值给一个父类类型的变量。
  父类类型 父类变量=new 子类类型()。
  
此时父类类型变量能调用的方法是:
此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法,不是父类的方法。
此时通过父类引用变量无法调用子类特有的方法。

父类类型变量,如果想调用子类中特有的方法,需要将父类类型的变量向下转型。在向下转型的时候注意子类的类型(使用instanceOf关键字判断)

向下转型:将一个指向子类对象的父类引用赋给一个子类的引用,即:父类类型转换为子类类型。需强制类型转换

<子类型> <引用变量名> = (<子类型> )<父类型的引用变量>;

在向下转型的过程中,如果没有转换为真实子类类型,会出现类型转换异常

(3)将父类当作方法的参数

使用父类作为方法的形参,是Java中实现和使用多态的主要方式

使用父类作为方法的返回值,也是Java中实现和使用多态的主要方式

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值