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

1.6多形对象的互换使用

1.继承带来的多态

继承的使用通常会带来一个,大量的类在同一个基础类型的基础上建立的情况,如图所示
《java编程思想》读书笔记——第一章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,但是只能继承一个类

你可能感兴趣的:(java编程思想读书笔记)