关于Java的转型,多态以及契约设计

Java的转型

如果我会发光,就不必害怕黑暗。 -----王小波
谈起Java的转型,首先让人想起的就是C++的强制转换
代码如下

int b=(int) 3.5;

上述的小代码即使把3.5通过强制类型将double转变成Int转换变成3
当谈起C++中的特点,大家都能想出来三个特点

  1. 多态性
  2. 继承性
  3. 封装性
    不得不说,C++的这些特点得益于C++多于C的类

对于Java而已,则更偏重于类方面的转换

在Java上,类可以相互转换但是仅限于有继承关系的类
下面就是Java类转型的一些要点

  1. 子类可以转型成父类,但是父类不可以转为子类(言外之意,儿子可以变成爸爸,但是爸爸不可以再变成儿子)
  2. 解释↑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("********");
			});

说是方便解耦,我只看出来可能比较低耦合,好比我这句话错了并没有多大问题,好的,就这么结束吧

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值