经过一个星期的学习关于OOP的一些特征也是学完了,今天老湿讲了最后的两个特征一个是多态一个是抽象。这两个词的意思不像前面的继承和封装那么好理解。但是我感觉理解起来也不是很困难,只不过就像老湿讲的一样,如果能将这些特征都灵活的运用到编程中去,还需要更多的练习。所以我觉得学习JAVA这个纯OO的编程语言还有很长的路要走。
今天讲的第一个特征是多态。多态我感觉更是为了面向对象而存在的东西,我们可以更加灵活,和更好的扩展来编写程序,如果一个简单的程序不如起床上学,我们就只需要几个步骤就可以达到,但是以后如果编写一个大型的程序,用面对过程的方式来考虑清楚每一步做什么是比较困难的,多态就是一个对象有多种形式的能力,比如说都是学生的我们学不同专业而做的工作是不同的。而多态就是为了体现这一点二存在的,同样的行为可以有不同的体现。
多态分为两种一种是静态的多态就是一般的重写和重载,但是如果我们想在运行过程中来决定计算机应该执行哪一个体现则需要用到另外一种多态就是动态多态。
比如你可以在父类里面写一个方法但是子类继承了这个方法之后又了不同的体现这就是多态参数,一个画家画画,可以画圆也可以话矩形或者其他形式的东西,这也是多态的一种表现发式,还有一种就是异构集合使用所有父类的父类object来编写一个集合,这样这个集合可以传入任何类型的参数,又名乾坤袋。(这个只是做了说明具体的在什么时候使用还要等学到后面才有更为深刻的理解)、
关于多态还有一个关键词就是instancaef 用他来比较一个实例化的对象的哪个子类的类型。。
关于抽象abstract,则更是因为是OO才有的东西因为就算不用抽象的父类也可以让这个程序正常的运行,那么我们为什么要使用抽象了,一个方面是为了设计的合理性,比如一个父类的方法不会有什么体现,只是为了子类能够重写他而编写的方法我们就可以用抽象。但是一个类中只要有了抽象的方法那么这个类也是抽象的类。这样就带给了我们第二个好处,尤其对于像我们这样的初学者来说 当你重写一个方法 你把方法名写错系统是不会报错的,而如果你的父类是抽象的,那么你没有重写父类的抽象方法系统会自动的报错,除非这个子类也是一个抽象的子类。