《java编程思想》读书笔记——第一章1.6多形对象的互换使用(多态)

1.6多形对象的互换使用

1.继承带来的多态

继承的使用通常会带来一个,大量的类在同一个基础类型的基础上建立的情况,如图所示
在这里插入图片描述
2.向上转型

要处理好这些大量的类,我们需要注意,在编写代码的时候应该将这些子类当作父类来对待,处理这样的好处:
1.我们只要针对父类规定的接口书写单一的代码,忽视具体类型细节,将具体逻辑交给类自身的具体实现,代码变得更加容易理解和书写
2.代码变得有扩展性,比如此时再增加一个形状类,旧代码由于是面向基础类型编写的,将能够兼容新增的类型

class shape{
	getName(){
	System.out.printf("查百度啦憨批")
	}
}
class Circle extend shape{
	getName(){
	System.out.printf("这是圆形啊你瞎🐴")
	}
}
class Trangle extend shape{
	getName(){
	System.out.printf("这是三角形啊你瞎🐴")
	}
}
class user{
public static getName(Shape shape){
	shape.getName();
}

public static viod main(String args[]){
		Circle c =new Circle();
		Trangle t =new Trangle();
		getSize(c);
		getSize(t);
	}
}

可以看出,这里的getName方法完全没有进行逻辑判断,但是结果来说能够只能的执行不同的类型输出不同的输出的行为
这种,将类型当作其父类型进行处理的行为,叫做向上转换
这里的getName方法,并没有进行,如果你是xx则xx的逻辑判断
而是,既然你进来了,那么你是一个形状,我知道你能说出你的名字,请自己去做这个行动,并自己控制所有的细节吧

3.多态,动态绑定的定义

在不知道对方的具体类型是什么(比如此处的getName只知道来的是Shape,并不知道是哪种具体的类型),但是又能够做出正确的行为的情况叫做多态性
用以实现多态性的方法则被称为:动态绑定

4.抽象的基础类与接口
在多态的运用基础上,我们自然开始希望,基础类能越简单越好,最好是只提供接口(这里指的是对于对象可以接受的消息的类型的定义)——不希望任何人对他实例化,只是把它作为向上转型的“工具人”
由此产生了abstract抽象关键字
abstract的规则:
1.abstract类不允许被实例化,因为可能存在没有被具体实现代码的方法,这种类的实现没有意义
2.abstract类中可以不包含abstract方法,只是被标记为不能被具体实现的方法
3.有abstract方法则必须为abstract类,因为有没有被具体实现代码的方法
4.abstract方法必须不包含方法体,书写格式如下

abstract void getName();

在抽象类的基础上更加一步延伸,有了interface关键字,其完全禁止了所有方法的实现,只进行接口的定义
且因为interface只定义了接口,一个类可以实现多个interface,但是只能继承一个类

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值