多态遇到的问题以及解决方法

我们在学习的过程中肯定会遇到很多的问题,比如我刚开始学多态的时候,遇到的问题,就是,多态是什么,但后面我学会后,卡在了一个地方,那就是多态到底该怎么使用呢,可能大部分人都会有这种问题,感觉多态其实和继承差不多的,用多态我为什么不用继承呢,还有多态的上下转型到底有什么用啊,之类的问题,我们今天来看一下这些问题。

继承:将某类事物中公共的属性及方法抽离出来,以简化代码
方法重写:在继承或实现关系中,方法名相同,参数列表相同,返回值类型相同,子类中的权限要大于或等于父类中的权限
为什么需要重写呢?
父类提供的功能,但是子类有自己的特殊实现形式,此时就可以重写,例如:人都会吃饭
抽象类:抽象的不具体的
为什么要由抽象类存在?
1、普通类中不能多继承,因为会出现调用不明确的问题
2、当所有的子类都有自己的特殊实现时,父类中方法的方法体就没有存在的意义
接口
1、父类中的方法体没有实际意义时,父类中的方法仍然需要存在,在接口存在的意义就是作为规则
2、扩展
3、耦合性低
这相当于在继承的概念上又加了一层概念,在抽象的关系上又多了一层概念,到接口,接口和继承是很相似的,所以我我们又回到了继承上面,相当于是一个轮回

多态的使用场景
需要 描述多个子类的时候,多个子类有公共的方法.

多态 必须要有继承或实现的关系
父类数据类型 变量名 = new 数据类型(); //有继承关系
数据类型 变量名 = new 数据类型();//单个的类
User user = new User();
User user2 = new User();
user = user2;
int count = 1;//当需要对某一个对象进行多次使用的时候才需要定义变量接收

上述的两个语法,其实可以不要前面的变量定义 1 1
疑问:为什么可以使用不同的类型接收
	变量的存在是接收了某个具体的对象,也可以指代其他的同类型的对象
	
疑问:什么时候会用到多态


public void method(三 小三){
	小三是个好孩子,听话,懂事
}

public void method(绿 小绿){
	小绿是个好孩子,听话,懂事
}

//方法存在的意义时用来描述老张家的孩子的,之所以传了一个参数的类型是老张,因为老张家有多个孩子,为了方便描述
//实际要去描述的仍然是老张家的孩子
public void method(张 老张){ //张 老张 = 小三
	老张家的孩子是个好孩子,听话,懂事
}

这个呢,是我写的一个多态的案例,告诉大家为什么要用多态,多态是什么,有什么作用

向上转型和向下转型:
向上转型是为了统一描述,向上转型只能调用公共方法,向下转型就是从父类转为某一个子类,调用子类里的方法
向上转型是自动进行的,也称隐式转换
向下是强制转换,称显式转换

子父类调用的时候不明白
普通方法编译的时候看的是父类里的方法,执行的时候看的是子类的方法
静态方法编译的时候看的是父类里的方法,执行的时候看的是父类的方法
公共的属性是一样的

这些呢,是我总结出来的一些方法和概念,大家可以看一看,因为接触的还不多,后面我可能还会继续的补充。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值