面向对象三大特性

来源:互联网 发布:淘宝美术设计招聘 编辑:程序博客网 时间:2024/05/28 15:13

    面向对象三大特性,读起来朗朗上口:封装、继承和多态,在不同的学习阶段,理解程度是循序渐进的。好像每一个阶段都会强调面向对象的特性,现在接触java的时候,同样告诉我们面向对象。面向对象真的这么重要吗?

【面向对象】

    面向对象符合人类思考问题的习惯,成为指挥者,要想完成一件事情直接找一个对象去做,而不是自己辛辛苦苦成为执行者一步一步去做,能将问题简单化,可见面向对象的确不一般。那么我们就通俗的理解一下面向对象的三大特性吧。

【封装】

封装:将对象的方法和属性的实现细节进行隐藏,仅对外提供一些公用的访问方式。

    我们常见的封装也就是方法和类了,某个类可以是具体实现一个功能,我们应用的时候只要知道这个类是干什么的就好了,而不是需要了解这个类具体是封装了哪些东西,类中的方法也可以进行一个个的归类,一个方法一个功能,调用的时候直接调用方法就可以了,而不用了解方法的具体实现过程,这就是封装,可以将问题实现的细节进行隐藏,方便用户的使用。除了类、方法以外,包也是很高的封装体。

【继承】

继承:子类自动继承父类非私有的成员变量和成员方法。

    java只支持单继承,不支持多继承,但是接口的多实现弥补了这个不足,它是支持多重继承的,即可以传递着继承,有一点需要我们注意继承了父类,子类可以对父类的方法进行重写,重写的修饰符必须是大于等于父类的修饰符的。

出final修饰的类都是能够被继承的,我们知道抽象类可以被继承,一般类可以被继承,那么有没有想过抽象的类可以继承一般的类吗?答案是可以的。

【多态】

多态:父类的引用指向子类对象,配合继承和实现使用,重点是离不开重写,如果没有方法重写,多态也就毫无意义。

    多态的出现也是大大提高了代码的复用性,多态的前提是继承和接口的实现,方法的重写。多添分为三种形式:一般类和类之间的继承;抽象类和一般类之间的继承;还有实现类和接口之间的实现,这都是可以用父类引用指向子类对象完成的,多态可以说是向上转型,那么既然有向上转型,那么向下转型也是少不了的,其实向下转型属于强制转换了,同我们之前学习的数据类型的强制转换,可以结合instanceof来判断使用。

【代码实现-综合三大特性】

//抽象的Animal类,两个方法,一个共有的,一个抽象的public abstract  class Animal {public void drink(){System.out.println("动物都需要喝水");}public abstract void eat();}//Cat继承Animal,重写方法,并且添加自己特有catchMouse方法public class Cat extends Animal{    public void eat(){        System.out.println("猫咪喜欢吃鱼");    }    public void catchMouse(){        System.out.println("猫特有的功能是会抓老鼠");    }}//Dog类public class Dog extends Animal{    public void eat(){        System.out.println("狗喜欢啃骨头");    }    public void keepHome(){        System.out.println("狗特有的功能是能保护家");    }}//测试类public class Test01 {    public static void main(String[] args) {        //多态实现共有方法调用,但是不能调用各自特有的方法        Animal c=new Cat();        c.drink();        c.eat();        Animal d=new Dog();        d.drink();        d.eat();        //向下转型调用特有方法        if(c instanceof Cat){            Cat c1=(Cat)c;            c1.catchMouse();        }    }}

【小结】

     知识就是在不断回顾,不断加深的,刚开始的时候不太懂没有关系,慢慢的积累,慢慢的总结,总有一天会明白的。现在这种学习习惯一直贯穿着我的学习,而且很多问题想了还不够,更需要动手去做一下,切不可眼高手低,始终坚信:实践出真知,坚持学习,面向对象将会一直陪伴我们,希望我们将面向对象思想贯穿到底。


0 0