java面向对象的特点

来源:互联网 发布:购票软件哪个更好 编辑:程序博客网 时间:2024/05/13 06:21

1、封装

       在面向对象中封装是指隐藏对象的属性和实现的细节,仅对外提供公共访问方式。在类定义中用private关键字来实现封装。

封装的好处:

  一是用private把类的细节与外界隔离起来,从而实现数据项和方法的隐藏,而要访问这些数据项和方法唯一的途径就是通过类本

身,类才有资格调用它所拥有的资源(方法,数据项属性等等)。所以第一个好处就是数据的安全性提高了。

  二是通过隐藏隔离,只允许外部对类做有限的访问,开发者可以自由的改变类的内部实现,而无需修改使用该类的那些程序。只

要那些在类外部就能被调用的方法保持其外部特征不变,内部代码就可以自由改变,各取所需,利于分工。

  三就是提高了代码的重用性,封装成工具类以后能够减少很多繁琐的步骤。

     总之, 封装保证软件部件具有优良的模块性的基础封装的目标就是要实现软件部件的“高内聚、低耦合”,防止程序相互

赖性而带来的变动影响。在面向对象的编程语言中,对象是封装的最基本单位面向对象的封装比传统语言的封装更为清晰、更

为有力,要修改类的属性值,必须通过该类的getXXX()方法和setXXX()方法来实现,可以在setXXX()方法中加入判断,减少产生垃圾信息


2、继承

       Java继承是使用已存在的类的定义作为基础建立新子类的意思,新子类的定义可以增加新的数据(成员变量)或新的功能(方法)。其中新的子类可以使用在父类中定义好的成员变量,(也就是说能够不用定义直接使用父类中定义过得成员变量,因为已经继承了)同时JAVA不支持多重继承,单继承使JAVA的继承关系很简单,一个类只能有一个父类,易于管理程序,同时一个类可以实现多个接口,从而克服单继承的缺点。此外,继承还能提高代码的重用性,和扩展性大大减少了重复的成员变量或者是方法。继承的关系是传递的。继承是在一些比较一般的类的基础上构造、建立和扩充新类的最有效的手段。


3、多态

什么是多态?简而言之就是相同的行为,不同的实现。 而多态也分为静态多态(重载)、动态多态(重写)和动态绑定。

  静态动态,实际就是指的重载的概念,是系统在编译时,就能知晓该具体调用哪个方法。动态多态指在运行中才能动态的确定

方法所指对象,动态多态的实现方式是重写父类中同名成员方法,其调用规则是依据对象在实例化时而非定义时的类型,相应的调

用对应类中的同名成员方法,它需要通过动态绑定和重写机制来实现。

  由类的继承性我们知道类之间的继承关系使子类具有父类的所有变量和方法,父类所具有的方法也可以在它所有子类中使用,

发给父类的消息也可以发送给子类 又可以推出=> 子类的对象也是父类的对象=>子类的对象既可以做本身的类型,也可以做父类

的类型。我们把这个称之为向上转型技术。

  向上转型技术:一个父类的引用变量可以指向不同的子类对象,或者说一个子类对象可以被当做一个父类类型。在操作中我们

可以使用instanceof来判断运行时对象的真正类型。    格式:变量名 instanceof 引用类名。(返回值boolean型)。

  动态邦定技术:运行时根据父类引用变量所指对象的实际类型执行相应的子类方法,从而实现多态性。

文字描述通常是不宜理解的,在程序中的思路如下例:

  

/**

 

 * 定义一个父类

 

 */

 

public Class Parents {

 

  public void print() {

 

    System.out.println(“parents”);

 

}

 

}

 

/**

 

 * 定义两个子类

 

 */

 

public Class Father extends Parents {

 

  public void print() {

 

    System.out.println(“father”);

 

}

 

}

 

public Class Mother extends Parents {

 

  public void print() {

 

    System.out.println(“mother”);

 

}

 

}

 

/**

 

 * 测试输出结果的类

 

 */

 

public Class Test {

 

  public void find(Parents p) {

 

    p.print();

 

}

 

public static void main(String[] args) {

 

  Test t = new Test();

 

  Father f = new Father();

 

  Mother m = new Mother();

 

  t.find(f);

 

  t.find(m);

 

}

 

}

 

最后的输出结果分别是father和mother,将子类的引用传给父类的引用,然后调用重写方法,父类的引用之所以能够找到应该调用那个子类的方法,就是因为程序在运行时进行了绑定。


注:

(多态:多态就是在声明时使用父类,在实现或调用时使用具体的子类;即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性,多态增强了软件的灵活性和扩展性。这里可以举个例子,比如声明时使用的是动物类,调用时传递的是一个猫类(动物类的子类)的对象,具体执行父类里动物——吃的方法时,实际执行的是——吃的方法。)






0 0
原创粉丝点击