浅谈Java面向对象

来源:互联网 发布:微信怎么清除缓存数据 编辑:程序博客网 时间:2024/04/29 08:55

(本文纯属个人理解,如有误区,欢迎大家指出,高手勿喷)

    笔者接触学习Java至今不到三年的时间,发表第一篇技术性的帖子,希望对大家有所帮助。

类和对象

    学过java语言的人都知道,Java是面向对象思想编程,那么何来面向对象一说呢?相信大家都听说过一句话“万物皆对象”,抛开代码来谈,世界万物,看得见摸得着的东西都可以成为是一个对象,这个对象一定是看得见摸得到的实体,比如“姚明”就是一个实体对象。然而所有的对象都会有分类,对于姚明,我们可以按照他的国籍,把他分为中国人这一类,可以根据职业把他分到运动员类。那么这个类就是一个抽象的概念。

    在Java中,类是抽象的存在,是一组拥有共同特性的对象的集合,类中分为两个部分,一个是属性(成员变量),一个是方法。属性即是类中所有对象的共同特征,方法则是类中所有对象都能够完成的动作(为了实现某个功能)像这样将某一类对象的共同特征提取出来的方式,我们可以理解成为是抽象;’对象则是构成一个系统的基本单位,我们可以通过类将对象实例化出来,这个对象可以使用类中的属性和方法。

封装

    封装的特性就是尽量隐藏类中对象的内部属性,只是同过固定的权限,开放部分接口与外界联系,这样做的好处就是可以有效地保证类和对象的安全。在Java中共有四种权限

分别是公开(public)、私有(private)、默认(default)和受保护(protected)。

    对于public权限,它可以修饰类、属性、方法和构造方法,它的目的是完全公开,一旦设置了public权限就说明这个类、属性、方法或者是构造方法可以在整个项目中被共享访问以及修改,通常的类和方法大多用public修饰;而private则不同,它是Java语言中安全级别最高的权限,可以修饰内部类、属性、方法和构造方法。一旦被private修饰,则只能在同一个类中访问,一旦范围出了这个类,我们就找不到他了,如果想找到类中的私有属性,也可以给他设置对外开放的接口,对外提供使用。通常在Java中,大多数类的属性会被设置为private权限;默认权限可以在同一个包内访问得到,出了同一个包就无法找到了;protected权限和默认一样,但是它多了一个可以在其子类中访问得到。

继承

    简单来说,一个类如果使用了extends关键字,那么关键字指向的那个类就是这个类的父类,这个类就是extends关键字指向类的子类,这种关系就叫做继承。继承关系达成之后,子类就会自动拥有父类中所有非private权限的属性和方法。Java语言中只存在单继承,也就是子类只可以拥有一个父类。    

    继承的好处就是减少了代码量,大幅度提高了代码的复用。比如父类中的属性子类不必重新声明,除非是子类独有的属性。子类也可以直接使用父类的方法,如父类方法不满足子类需求,子类可以重写父类方法(在子类中声明一个@override注释的与父类中方法名、参数、返回值类型一致的方法),以达到子类特有的需求。如果在子类中想要调用父类被重写的方法或者构造方法,可使用Super关键字。

    在Java语言中,所有类都有一个共同的顶层的父类,就是Object类。Object类中包含了一些方法,可供所有的类使用,例如toString()、equals()等。在这里就不一一列举。

多态

    说完了继承,就一定少不了多态。多态的概念在Java中非常的重要,而且对于初学者比较难理解。它的意义在于,父类中的属性或方法被不同的子类继承以后,可以有不同的表现形式,这也可以体现Java语言的灵活性。

    Java的多态性也有两种方式的体现,一种是静态的绑定方式,另一种是动态的绑定方式。静态绑定方式可以理解为在编译阶段,编译器就可以准确的判断出对象调用的是哪个方法,比如方法的重载,通过实参返回值类型的区分,就可以在编译的时候准确的找到绑定的对象;动态的绑定方式是指在运行的过程中去判断需要绑定的对象,这种方式需要用到三个要素:继承、重写、向上转型。所谓的向上转型,就是使用父类的指针指向子类的对象(这样写的好处就是不用每个子类一对一的去创建自己的对象,而是一个父类以一对多的形式去创建子类对象。这样可以很大程度上的减少冗余,降低耦合)。这种思想在很多设计模式中也有用到,例如装饰器模式,适配器模式等,都会有一个父类的接口,让所有衍生出来的子类去实现它,这样做的好处就是不管我们需要创建哪个子类的对象,我们都是用父类接口去指向他的对象就可以了。多态是一个Java中非常重要的概念,应用的地方也比较多。只有突破了这层障碍,领会了多态思想,才可以继续深入理解Java。

    


   


2 0
原创粉丝点击