Java的转型
如果我会发光,就不必害怕黑暗。 -----王小波
谈起Java的转型,首先让人想起的就是C++的强制转换
代码如下
int b=(int) 3.5;
上述的小代码即使把3.5通过强制类型将double转变成Int转换变成3
当谈起C++中的特点,大家都能想出来三个特点
- 多态性
- 继承性
- 封装性
不得不说,C++的这些特点得益于C++多于C的类
对于Java而已,则更偏重于类方面的转换
在Java上,类可以相互转换但是仅限于有继承关系的类
下面就是Java类转型的一些要点
- 子类可以转型成父类,但是父类不可以转为子类(言外之意,儿子可以变成爸爸,但是爸爸不可以再变成儿子)
- 解释↑1,子类继承父类所有的财产,子类转型为父类(从大变小,即向上转型)
代码示例
Human obj1 = new Man();
Java核心技术中写的源码把Human定义为父类 Man定义为子类
这句代码前面表面上定义了一个Human类的obj1,实则是obj1用Man转型为父类,即重要的向上转型
错误代码实例
Man obj1= new Huamn();
另一种特殊情况,父类可以转型成子类的
那么我对象本身是父类从子类转化过来的
代码如下
Human obj1=new Man(); //表面是Human,实则是Man转型变成的父类
Man obj2= (Man) obj1; //成立obj1相当于子类
多态就是类型转化带来的结果
子类继承了父类的所有方法,子类也可以重新定义一个名字,参数和父类一样的
这种方式就叫做重写
多态的作用
- 以统一的接口来操纵某一类中不同的对象的动态行为(估计指的是有几成性的父类和子类)
- 对象之间的解耦
解耦意思应该是指把两个类的关系尽量的缩小,防止一个出错,所带来的连发效应
编程中强调的高内聚,低耦合应该如次
契约设计
public static void Qiqyue(Human a)
{
a.eat();
} //这里表示我设计一个QiYue方法,它的形参只能是Human
QiYue(new obj1); // 满足,obj1就是一个Human类
QiYue(new Human()
{
System.out.println("********");
});
说是方便解耦,我只看出来可能比较低耦合,好比我这句话错了并没有多大问题,好的,就这么结束吧