黑马程序员_Java继承、多态、接口零碎知识总结

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

 

Blog_13_1 继承

继承:多个类中存在相同的属性或者是行为时,将这些相同的属性或者行为抽取到单独的一个类中,那么这多个类就无需再定义这些属性或者行为,直接让多个类与那个类产生一个关系,这个关系就叫继承。

继承的好处:提高了代码的复用性,让类与类之间产生了关系是多态的前提。

注意:不要为了使用某一个方法而去继承另外一个类。

什么时候使用继承呢?--当一个类和另外一个类有”is a”关系的时候,就可以考虑使用继承了。如狗是动物的一种,这时就可以用狗继承动物。当一个车辆类中有一个run()方法,一个狗类中也有一个run(),方法时这时我们不能为了省写狗类中的run()方法,而让狗类去继承车辆类。

继承间的成员变量的关系:

(1)成员变量关系:

A.      子类和父类中的成员变量不同:该用谁就用谁;

B.      子类和父类中的成员变量有相同的时:先在局部范围查找,如找到则用局部,如果没找到,则在本类成员位置查找,找到则用,若还是没找到,则到父类的成员位置去查找,找到则用。

那怎样在子类中调用父类和成员位置的变量呢?

当局部变量和成员变量一样,而我们又要使用成员变量时,我们使用this关键字来调用成员位置的变量。

当子类中存在和父类中一样的成员变量时,而我们又想在子类中调用父类的成员变量,这时可以使用super关键字调用。

This的实质是:本类的一个对象;

Super的实质是:父类的一个对象;

在静态方法中不能使用thissuper

(2)有继承关系时构造方法需要注意事项

特点:在初始化子类之前,先初始化父类的数据。

A.       子类会默认调用父类的无参数构造函数。子类每一个构造方法中第一条语句默认是super();(注意super();此时并没有创建父类的对象)。

B.       一旦手动给出构造函数,系统将不会默认提供无参数构造方法;若子类要调用父类中的带参数构造则用super(参数…)

C.       对于如

class A{
System.out.println(“A”);
}
class B extends A{
System.out.println(“B”);
}

表面上是没有构造函数,但编译却能通过,原因是在编译时编译器能自动把每个类的无参数构造方法加上。

(3)成员方法关系:

A.方法声明不同的用谁就调谁;

B.方法声明相同时(即为方法重写),先在子类中查找,有则使用。如果没有,则在父类中查找,有则使用,无则继续往上查找,都没找到则报错。

方法重写需要注意事项:

A.      私有方法不能被重写

B.      子类中重写的方法权限要大于父类方法权限

C.      静态方法只能被静态方法重写。

方法重写和方法重载的区别:

A.      所在位置不一样,方法重载是在一个类中,而方法重写发生在有继承关系的来。

B.      方法重写,在父类和子类中方法声明一模一样,而方法重载只要求方法名一样,参数列表不一样(和返回值类型无关)。

Final关键字的作用:

1.      final修饰的方法不能被重写

2.      final修饰的类不能被继承

3.      final修饰的成员变量是常量不能被更改

Blog_13_2 多态

多态:同一个对象,在不同时刻表现出来的多种状态。

多态的前提:

A.要有继承,或者实现关系;

B.要有父类引用指向子类;

C.要有方法的重写。

多态的好处和弊端:

好处:提高代码的的复用,和提高程序的扩展性,尽量不要使用具体的东西。

弊端:不能访问子类特有的功能(ps.若要使用把父类引用进行强制转换)。

多态中的成员特点:

成员变量:父类引用只能调用到父类中的成员变量。

成员方法:若子类中有重写方法,父类引用只能调用到子类中的重写方法。

多态的表现形式:具体类多态、抽象类多态、接口类多态;在抽象类和接口中多态的形式使用得更多。

多态的使用口诀:

              Fuf = new Zi();

A:成员变量 编译看父类,运行看父类

B:成员方法 编译看父类,运行看子类

C:静态方法 编译看父类,运行看父类(静态的方法其实不叫重写)

Blog_13_3接口成员特点与抽象类

接口:如果一个类中的所有方法都是抽象的这时java就提供了一种更为抽象的表示形式接口。

抽象类成员特点:

A.  成员变量:可以是常量,也可以是变量,可以被static修饰,也可以不被static修饰。

B.  成员方法:抽象类中可以有抽象方法,也可以有非抽象方法。

C.  构造方法:抽象类虽然不能被实例化,但其还是有构造函数,用于子类向父类初始化数据。

接口成员特点:

A.成员变量:都是常量而且都被static修饰(默认修饰符是public static final)

B.  成员方法:都是抽象方法,而且都是公共的(public修饰)。

C.  构造方法:没有构造方法(如果有构造方法的话,它肯定有方法体,和接口中的方法都是抽象的相悖,所以接口中没有构造方法)。

接口的思想特点:

1.      降低耦合性

2.      增强扩展性

3.      接口可以多实现

4.      对外暴露规则

类与接口的关系:

类与类的关系:单继承关系,可以多层继承;

类与接口的关系:实现关系,可以多实现;

接口与接口的关系:可以多继承。(最后实现此接口的类要实现包括此接及此接口父类的所有抽象方法)

 

----------------------- android培训java培训、java学习型技术博客、期待与您交流! ----------------------

详情请查看:http://edu.csdn.net/heima

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值