首页 > 其他 > 详细

面向对象

时间:2019-09-24 17:52:35      阅读:76      评论:0      收藏:0      [点我收藏+]

继承

继承的特性:

1.子类拥有父类非 private 的属性、方法。

2.子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。

3.子类可以用自己的方式实现父类的方法。

4.Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 A 类继承 B 类,B 类继承 C 类,所以按照关系就是 C 类是 B 类的父类,B 类是 A 类的父类

5.提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)。

final关键字 

final 关键字声明类可以把类定义为不能继承的,即最终类;或者用于修饰方法,该方法不能被子类重写。

被声明为 final 类的方法自动地声明为 final,但是实例变量并不是 final

构造器 

子类是不继承父类的构造器(构造方法或者构造函数)的,它只是调用(隐式或显式)。如果父类的构造器带有参数,则必须在子类的构造器中显式地通过 super 关键字调用父类的构造器并配以适当的参数列表。

如果父类构造器没有参数,则在子类的构造器中不需要使用 super 关键字调用父类构造器,系统会自动调用父类的无参构造器。

 

重写(Override)

 

重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!

重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。

 

方法的重写规则 

1.参数列表必须完全与被重写方法的相同;

2.返回类型必须完全与被重写方法的返回类型相同;

3.访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected。

4.父类的成员方法只能被它的子类重写。

5.声明为final的方法不能被重写。

6.声明为static的方法不能被重写,但是能够被再次声明。

7.子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为private和final的方法。

8.子类和父类不在同一个包中,那么子类只能够重写父类的声明为public和protected的非final方法。

9.重写的方法能够抛出任何非强制异常,无论被重写的方法是否抛出异常。但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则可以。

10.构造方法不能被重写。

11.如果不能继承一个方法,则不能重写这个方法。

 

Super关键字的使用 

当需要在子类中调用父类的被重写方法时,要使用super关键字。

 

重载(Overload) 

重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。

每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。最常用的地方就是构造器的重载。

 

重载规则: 

1.被重载的方法必须改变参数列表(参数个数或类型不一样);

2.被重载的方法可以改变返回类型;

3.被重载的方法可以改变访问修饰符;

4.被重载的方法可以声明新的或更广的检查异常;

5.方法能够在同一个类中或者在一个子类中被重载。

6.无法以返回值类型作为重载函数的区分标准。

 

多态 

多态:一种是编译时期多态又叫静态多态,编译时期的多态是靠重载实现的,根据参数个数,类型和顺序决定的。另一种是运行时的多态,在运行时根据实际情况决定调用函数。

 

多态优点: 

1. 消除类型之间的耦合关系

2. 可替换性

3. 可扩充性

4. 接口性

5. 灵活性

6. 简化性

 

运行时多态存在三大条件: 

继承、重写、父类引用指向子类对象

 

当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。

 

要想调用父类中被重写的方法,则必须使用关键字super。

 

虚方法调用:

技术分享图片

 

 

以上整个过程被称为虚拟方法调用,该方法被称为虚拟方法。

Java中所有的方法都能以这种方式表现,因此,重写的方法能在运行时调用,不管编译的时候源代码中引用变量是什么数据类型。

多态实现方式: 

1.重写 2.接口 3.抽象类和抽象方法

技术分享图片

 

 

抽象类总结: 

1. 抽象类不能被实例化(初学者很容易犯的错),如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。

2. 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。

3. 抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能。

4. 构造方法,类方法(用static修饰的方法)不能声明为抽象方法。

5. 抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。

  

 

接口 

注意点:

1.一个类通过继承接口的方式,从而来继承接口的抽象方法。

2.除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。

3.在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象,如图:

技术分享图片

 

 

4.接口中的成员变量只能是 public static final 类型的

5.接口中不能含有静态代码块以及静态方法(用 static 修饰的方法)

6.接口是隐式抽象的(方法也是,且是public的)

7.一个接口能继承另一个接口,和类之间的继承方式比较相似。接口的继承使用extends关键字,子接口继承父接口的方法。

8.在接口的多继承中extends关键字只需要使用一次,在其后跟着继承接口。

9.在接口的多继承中extends关键字只需要使用一次,在其后跟着继承接口。

10.标记接口是没有任何方法和属性的接口.它仅仅表明它的类属于一个特定的类型,供其他代码来测试允许做一些事情。标记接口作用:简单形象的说就是给某个对象打个标(盖个戳),使对象拥有某个或某些特权。

没有任何方法的接口被称为标记接口。

 

标记接口: 

作用1:建立一个公共的父接口

作用2:向一个类添加数据类型

 

JDK1.8接口新特性default

技术分享图片

 

 技术分享图片

 

 技术分享图片

 

 技术分享图片

 

 

 

 这篇文章,大部分内容来自于runoob,我将它们收入我的笔记,也分享给大家。

老九学堂会员社群出品

作者:柳成萌

面向对象

原文:https://www.cnblogs.com/ljxt/p/11579744.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!