Java面向对象的总结

JAVA面向对象的总结

  • 类和对象的分析:
  • 构造方法和成员方法的区别:
  • 方法重载与重写的区别:
  • 什么是封装,为什么要封装?
  • 什么是继承,为什么要继承?
  • Java继承需要注意的问题:
  • 类的继承中构造方法的使用:
  • 什么是多态,为什么要多态?
 

1.类和对象的分析:

 
什么是类,什么是对象?
类是一个模板,它描述了对象的行为和状态(如飞机,汽车,男孩,等) 而每一架具体的飞机,每一量具体的车,和每一个具体的人都是一个对象.   
下图中男孩女孩为类,而具体的每个人为该类的对象:
 
对象:对象是一个类的实例(不是找女朋友),一个人是一个对象,一条狗,一辆车都是一个对象,他们有各自的状态和动作.(类中描述的)
 
 
 

2.构造方法和成员方法的区别:

 
成员方法是表示动作,行为的操作,而构造方法是在创建对象的时候使用的
  • 构造方法与类名完全一致,构造方法没有返回值(连void都不可以),标识符类型必须为public,但是成员方法可以使用private,public,protect,static等修饰.
  • 构造方法里面有一个super()去调用父类的构造方法,但是成员方法是没有的
  • 每个类都有1或多个构造方法
  • 构造方法不可以被子类所继承,但是成员方法可以
  • 构造方法的调用是在new一个对象的时候创建的
  • 构造方法在创建对象的时候自动调用,不需要显示的调用

3.方法重载与重写的区别:

  • 方法的重写与重载的方法名都必须与原方法名相同
  • 方法的重载的发生条件必须是在同一个类中,而方法的重写发生在子类中(子类重写父类中的方法)
  • 方法的重载与返回值类型和限定符都没有关系,只和参数的列表和参数个数有关,但是方法的重写要求参数列表必须完全一致,返回值类型也必须完全一致.
  • 子类重写父类的方法,访问限定符的范围只可以变大,不可以缩小
  • 子类重写的是从父类中继承的方法,如果父类中方法为private,那么子类就不可以重写
 

4.什么是封装,为什么要封装?

封装是什么:
封装就是通过访问访问限定符(一般为private),限制实例变量只能本类自己访问,当外界想要访问本类的实例变量时,只能使用方法来访问.(将具体实现细节隐藏起来)
 
 
图中的Student就实现了封装,使用private限定符来限制了name和id的访问权限,当我们想要设置名字和id,或者得到名字和id时都要使用公有的方法来实现
 
注:对于一件事情的处理可能会有很多的步骤,但是中间的过程都是为后面的过程服务的,用户只需要直接使用最后的方法即可,那么前面的这些方法都将设置为private,用户访问的方法设置为public,这样就隐藏了实现的细节.
 
在上图中,学生对象不必关心get方法的钱是怎么算出来的,只需要调用自己的set方法就可以设置自己的金额.这就是一个隐藏了实现过程的一个例子.同时便于修改.
封装的优点是什么?
  • 良好的封装能够减少耦合。
  • 类内部的结构可以自由修改
  • 可以对成员变量更加精准的控制
  • 隐藏信息,实现细节

5.什么是继承,为什么要继承?

继承就是一个类使用另一个类的实例或方法
生活中的继承现象
父类:(基类,超类)
子类:(派生类)
  • 子类可以继承父类非私有的属性和方法(可以重用代码,减少代码的冗余)
 
 
  • 子类可以定义自己的属性和方法(对父类进行扩展)
 
在上图中
  • 子类特有的属性和方法,必须声明为子类的类型才可以使用
 
在上图中,st1和st3声明的不是UnStudent对象类型,所以不可以访问子类新增的属性和方法,只有声明为子类的类型时才可以调用子类新增的属性和方法
  • 子类可以重写覆盖父类的属性和方法
当子类重写父类的方法时,子类的方法将会覆盖父类的方法,所以当我们创建一个子类类型的对象时,无论声明为子类类型还是父类类型,都将会调用子类重写的方法和属性.
 
Java继承需要注意的问题:
Java是单继承,不支持多继承
 
 注:除Object类以外,其他任何类都仅有一个直接父类
    除Object类外,任何类都至少有一个或多个父类
 注:每个类都是用Object作为超类.所有对象(包括数组)都实现了这个类的所有方法.

6.类的继承中构造方法的使用

  • 父类的构造方法子类不会继承(只会调用)
  • 当子类在创建对象时,会调用子类的构造方法,子类的构造方法的第一句是super(),调用父类的构造方法
 
解释:
当new一个C对象时,首先会调用C类的构造方法,然而C类的构造方法的第一句就是super(),super()会去调用它的直接父类B的构造方法,以此类推,B类构造方法中的super()又会调用它的直接父类A,A在调用Object类的构造方法,进行初始化与创建对象.
 

7.什么是多态,为什么要多态?     

多态是同一个行为具有不同的表现形态的能力(对象多种形态的表现)
 
 
现实中,比如我们按下 F1 键这个动作:
  • 如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档;
  • 如果当前在 Word 下弹出的就是 Word 帮助;
  • 在 Windows 下弹出的就是 Windows 帮助和支持。
同一个事件发生在不同的对象上会产生不同的结果。
其中F1相当于父类中的一个方法,Flash,Word,Windows相当于父类的三个子类,并且都重写了父类中F1的方法,同一个方法,不同的对象有不同的表现形式,这种同一个行为具有不同的表现形式的能力叫做多态.
  • 由于继承和重写机制导致的多态----------动态多态
  • 由于重载机制导致的多态-----------------静态多态
 
 
上图中,cat,dog,tiger都是创建的父类的引用,指向了子类的对象,首先在调用方法时,发现父类中有相应的方法,于是再去子类中查看是否有相应的方法,如果有直接调用子类重写的方法.
 
注:当使用多态调用方法时,首先会检查父类中是否有此方法,如果没有就会报编译错误,如果有再去调用子类同名的方法.
 
多态存在的三个必要条件:
  • 继承
  • 重写
  • 父类的引用指向子类对象
 
多态的实现方式:
  • 重写:子类通过重写父类的方法实现多态
  • 接口:java中接口只有方法,没有具体的实现,需要实现接口的类重写接口中方法
  • 抽象类和抽象方法:子类继承抽象类,必须重写抽象类中的所有抽象方法
 
 
 
 
 
 
 
posted @ 2018-11-02 15:55  Bug研发工程师  阅读(168)  评论(0编辑  收藏  举报