JAVA之继承和多态

继承:

1. Java中类的继承特点:

        1)Java只支持单继承,不支持多继承。(一个儿子只能有一个爹)

        2)Java支持多层继承。

        3)子类只能继承父类所有非私有的成员变量和成员方法。

        4)子类不能继承父类的构造方法,但是可以通过super关键字去访问父类构造方法。

2. 继承的优点与缺点:

        优点

        a:提高了代码的复用性

         b:提高了代码的维护性。(比如动物都有腿,只需要在父类中增加即可。)

         c:让类与类之间产生了关系,是多态的前提

        缺点:

         类的耦合性增强了。

3. super

1) 调用成员变量

    子类和父类出现同名变量, 依据就近原则,子类有就用自己的。

    如果子类想访问父类的同名变量,怎么办?

   使用super关键字访问父类的成员变量和成员方法。

   

   注意:

   子父类出现同名的变量只是在讲课中举例子有,在开发中是不会出现这种情况的

   子类继承父类就是为了使用父类的成员,那么如果定义了同名的成员变量没有意义了

   

   this和super的区别:

   this:代表当前对象的引用,谁来调用我,我就代表谁。

   super:代表当前对象父类的引用。

 

   如何使用:

   1. 调用成员变量

           this.成员变量 调用本类的成员变量,也可以调用父类的成员变量

           super.成员变量 调用父类的成员变量

   2. 调用构造方法 【稍后再讲】

           this(...)     调用本类的构造方法

           super(...)  调用父类的构造方法

   3. 调用成员方法 【稍后再讲】

           this.成员方法 调用本类的成员方法,也可以调用父类的方法

           super.成员方法 调用父类的成员方法

   简单点说,如果子类有,this代表的就是子类的,如果子类没有,this还可以代表父类的。super只能代表父类的。

 

    2) 构造方法:

    如果没有特殊需求,尽量在类中定义一个无参的构造方法,避免被继承的时候出现错误。

 

4. 重写

overload 和 override的区别?

方法重载(overload):本类中方法的名称相同,参数列表不同。

方法重写(override): 子父类中的方法的名称相同,参数列表相同。

方法重载(overload):与返回值类型无关。

方法重写(override): 与返回值类型有关。返回值类型是一致的。

 

 final关键字:

1.  概念: final是最终的意思,不能改变。

2.  final修饰特点

         修饰类,类不能被继承

         修饰方法,方法不能被重写

         修饰变量(成员变量和局部变量),变量就变成了常量,只能被赋值一次。

1) final修饰变量叫做常量,一般会与public static共用. public static final double PI = 3.14;

2)final修饰成员变量初始化:在定义的时候或者构造方法中进行初始化。

3)被final修饰的变量成了常量,只能被赋值一次。


 final修饰局部变量:

  1.变量为基本数据类型,是值不能被改变。

  2.变量为引用数据类型,是地址值不能被改变,但是对象中的属性可以改变。

 

 

多态:

1.    多态(polymorphic),事物存在的多种形态。
2.     多态的前提:

1)要有继承关系

2)要有方法重写。

3)要有父类引用指向子类对象。

3. 多态访问:

1) 多态中访问成员变量: 编译看左边(父类),运行看左边(父类)

2) 多态中访问成员方法: 编译看左边(父类),运行看右边(子类)

3) 多态中访问静态方法: 编译看左边(父类),运行看左边(父类)。

4. 多态中向上转型和向下转型

       向上转型:Animal a = new Cat();

       向下转型:Cat c = (Cat) a;

       注意:一定是先有向上转型才有向下转型。

5. 多态的好处

        1)提高了代码的维护性(由继承保证)

        2)提高了代码的扩展性(由多态保证)

注意:在开发的时候很少用Animal a = new Cat();的这种形式,而是当做参数的时候用多态,因为扩展性强。

6. 多态的弊端:不能使用子类特有的属性和行为

多态的使用:在开发中使用多态一般都是子类的实参传递给父类的形参,从而去调用子类的重写方法。

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值