您的位置:首页 > 编程语言 > Java开发

java基础十二 面向对象特点_继承

2017-04-05 19:06 281 查看
java中,为了让类与类之间产生关系,就有继承这么一说,继承也是面向对象的三大特点之一

继承的好处是:

提高了代码复用性,维护性,它让类与类之间产生了关系(这也是多态的前提)

继承的缺点是:

增强了类之间的耦合性(耦合性其实就是类与类之间的关系,我们平时开发的原则是高内聚,低耦合;这里的内聚就是某个类自己完成某件事情的能力)

继承的特点:

java中只支持单继承,不支持多继承(有个很形象的例子,单继承可以体现为:一个儿子只能有一个爹)

java支持多层继承(比如A继承B,B继承C,这就形成了一个继承体系)

注意:子类中只能继承父类的所有非私有成员,子类不能继承父类的构造方法,但是可以通过super关键字去访问父类构造方法

继承什么时候用?

如果有两个类A和B,当符合A是B的一种或者B是A的一种时,就可以考虑使用继承,其实继承体现的就是一种"is a"的关系

继承时子类和父类成员变量的区分:

子类和父类的变量不同名时,就没有影响,该用什么用什么

子类和父类的变量同名时,使用就近原则,子类有就不用父类的了

继承时子类和父类方法的区分:

子类和父类方法不同名时,该用什么用什么

子类和父类方法不同名时,使用就近原则

this和super两个关键字的区别

使用区别调用成员变量调用成员方法调用构造方法
thisthis.
4000
成员变量调用本类的成员变量,如果本类没有,则调用的是父类的成员变量
this.成员方法可以调用子类或者父类的成员方法this()调用的是本类的构造方法
supersuper.成员变量调用的是父类的成员变量super.成员方法调用的是父类成员方法super()调用的是父类构造方法
注意:
this和super都必须放在构造方法里面的第一条语句

子类中所有构造方法默认都会访问父类中的无参构造器,因为子类继承父类中的数据,可能还会使用父类的数据,所以子类初始化之前一定会初始化父类的数据

其实,每个构造方法前面第一条语句都会是super(不管你有没有写,系统会默认给你加上),如果这个类没有继承任何类,那么他是默认继承Object类的(Object类是所有类的父类)

在java中是分层初始化的,会先初始化父类,在进行子类的初始化

比如:假设有A继承B,现创建A的一个实例 A a = new A();会先将B.class以及A.class分别加载到内存里面,在进行创建对象,创建对象是先初始化B,再初始化A

重写:

字父类出现了一抹一样的方法(返回值类型可以是字父类);

当子类需要父类的功能,而子类在这个功能里面里面有自己的特有内容,这样就可以重写父类方法,既保留了父类的功能,也加入了自己特有内容

方法重写时应该注意:

父类的私有方法子类是不可以重写的(因为父类的私有方法子类根本就无法继承,更别谈重写了)

子类重写父类方法时,访问权限不能更低(最好一致,当然可以比父类更大)

final关键字

final是最终的意思,它修饰的类不可以被继承,修饰的变量就成了常量(只能被赋值一次),他修饰的方法不能被重写

final修饰的局部变量:

如果是基本类型,值就不能改变了

如果是引用变量,就是地址值不能被改变(但是这个变量的属性还是可以改变的)

注意:用final修饰的变量必须显示初始化,或者用构造方法初始化(也就是在对象构造之前就必须初始化)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: