封装
体现形式:方法属性的私有化,内部类
优势:提高代码的复用、保证数据的合法
解释:
首先各位可以把一个类的方法和属性当成自己的一件快递。每一件快递在运输的过程中都需要将其包裹好再发出,这就好比在我们写代码的过程中需要对方法的属性进行封装。这样做可以有效的防止我们的数据被损坏。
快递在运输的过程中会经过不同的人的手中,但是有权利使用这件快递的人只有你自己,如果没有外边的包裹运输的过程中势必会造成物品的损坏,我们的数据也是如此,如果不用私有化将其封装,那么无论是谁都可以去直接修改你的数据。封装之后只有调用特定的get/set方法才能够对其进行查看以及修改。
继承
1、类用extends来继承另外一个类
2、类与类之间是单继承
3、通过继承,子类可以继承父类所有的方法和属性,但是子类只能使用父类中的一部分方法和属性
意义:提高代码的复用性,避免调用方法时混乱
解释:
继承关系顾名思义,就是子类可以去使用父类的属性以及方法(当然父类的部分东西是子类无法继承的)。和正常的家庭关系一样,一个子类只能拥有一个父类,但是一个父类可以拥有多个子类。举个例子来说,猫和狗二者作为家庭中的宠物,平时的活动几乎是一样的。这时就可以将二者的公共属性以及方法提取到一个新的类中(这里用宠物类),然后将猫狗两类用extends继承宠物类,再在宠物类中定义猫狗两类的公共属性。这个时候猫狗两类通过继承关系就拥有了宠物类中的方法和属性。这样在子类猫狗中就无需再定义一遍这些公共的方法。这样就提高了代码的复用性。
多态
编译时多态:方法的重载
意义:使代码的运用更加的灵活
方法名一致,返回值以及参数列表不同
运行时多态(基于继承):方法的重写
借用上边的猫狗案例来说,在宠物类中定义一个吃的方法。我们都知道猫和狗吃的东西是不一样的。
这个时候就可以采用方法的重写。然后将代码块中的代码进行修改,比如改成“猫吃鱼”、“狗吃骨头”。这样父类中的“吃”方法,在不同的子类中,就分别变成了两个不同的执行规则。举个例子来说,一位商人的两个儿子继承了商人卖东西的技能,但是两个儿子一个人卖吃的,另一个卖用的。同样是卖东西,但是两个儿子卖的东西却是不同的。对象能干什么看的是父类,怎么干看的是子类。
向上造型:
同样借用猫狗案例来说,现在定义一个新的类(宠物店),宠物店有一个职能是卖宠物。这时在出售的方法的参数列表中需要传进来一个对象。这个对象可能是猫也可能是狗。这样我们就需要通过方法的重载写两个出售方法,参数列表一个是猫一个是狗,但是效率很低,宠物店是不可能只出售两种宠物的,显然每次增加一种宠物就新写一个方法这样做是很累的。这时我们就需要使用向上造型,使用子类的构造方法来new一个对象,但是要把子类的对象赋值给父类的引用,这样我们写方法的时候只需要写一个,然后把参数列表改成父类对象即可。
向下造型:
基于向上造型,当我们要在刚才的方法里使用子类的方法时,用父类的引用去调用子类的方法显然不可行,这个时候就使用向下造型(将赋值给父类引用的子类对象使用类型的强制转换转给子类的引用),再调用子类的方法。
学习中自我总结,若有不足之处欢迎指出。