目录
一、继承(Inheritance)
1.访问控制符
2.构造方法
3.super和this
4.看题
二、Object类
三、多态(polymorphism)
一、继承(Inheritance)
继承的定义:继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
继承的意义:继承划分了类的层次性,父类代表的是更一般、更泛化的类,而子类则是更为具体、更为细化; 继承是实现代码重用、扩展软件功能的重要手段,子类中与父类完全相同的属性和方法不必重写,只需写出新增或改写的内容,这就是说子类可以复用父类的内容,不必一切从零开始。
1.访问控制符
公有访问控制符(public):Java的类是通过包的概念来组织的,包是类的一个松散的集合。处于同一个包中的类可以不需要任何说明方便地相互访问和引用,而对于不同包中的类,则不行。但如果一个类被声明为public时,它就具有了被其他包中的类访问的可能性,只要这些其他包中的类在程序中使用了import语句引入了public类,就可以访问和引用这个类。
保护访问控制符(protected):用protected修饰的成员变量可以被3种类所引用:该类自身、与它在同一个包中的其他类、在其他包中该类的子类。使用protected修饰符的主要作用是允许其他包中该类的子类来访问父类的特定属性。
默认访问控制符(default):该类只能被同一个包中的类访问和引用,而不可以被其他包中的类使用,这种访问特性又称为包访问性。同样道理,类内的变量或方法如果没有访问控制符来规定,也就是具有包访问性。简单地说,定义在同一个程序中的所有类属于一个包。
私有访问控制符(private):用private修饰的变量或方法只能被该类自身所访问和修改,而且不能被其他任何类(包括该类的子类)来获取和引用。private修饰符用来声明那些类的私有成员,它提供了最高的保护级别。
总结:也就是说,private全部都不能访问,只有自己可以访问。public全部可以访问。默认(default)和protected都是包内可以访问,但是protected给子类留了一手,允许包外的子类访问。
2.构造方法
构造字类对象之前,必须先构造父类对象。在子类的构造方法之中,必须显示或者隐式的调用父类的构造方法。当父类有无参构造方法时,子类会隐含父类的无参构造方法。当父类没有无参构造方法时,只有手动通过super()来调用父类的构造方法。
3.super和this
super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。
this关键字:指向自己的引用。
4.看题
分析:首先加载Use类,于是先打印“7”,(由于“8”是构造代码块,在对象实例化的时候执行)然后按照语句顺序打印“9”。然后new了一个D对象,首先要完成B对象的加载,于是输出“3”(21同理在实例化的时候执行)。接着需要对D进行加载,于是输出“6”(54同理)。然后开始构造对象,首先构造父类,于是输出“2”然后输出“1”。接着构造子类的对象,于是输出“5”“4”。然后按照语句顺序输出“10”。然后“2”“1”“5”“4”,最后输出“11”。
①使用类之前,必须进行类的加载(静态代码块和静态属性按照代码的书写顺序执行)
②对象的实例时,必须进行对象的构造过程(构造代码块和属性按照代码书写顺序执行然后再是构造方法)
③子类的加载之前,必须保证父类先加载完成
④子类的对象构造之前,先把父类的对象构造完。
二、Object类
所有类的祖先类,暂时不解释。
三、多态(polymorphism)
多态是同一个行为具有多个不同表现形式或形态的能力。
多态性是对象多种表现形式的体现。
现实中,比如我们按下 F1 键这个动作:
- 如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档;
- 如果当前在 Word 下弹出的就是 Word 帮助;
- 在 Windows 下弹出的就是 Windows 帮助和支持。
同一个事件发生在不同的对象上会产生不同的结果。
多态的特点我们会在后续的使用之中更加进一步的了解。
我么看如下的例子
也就是说能执行哪些功能(属性、方法)看引用类型,实际执行的是哪些功能看对象类型。
向下转型:向上转型是子类对象转成父类对象, 向下转型就是父类对象转成子类对象. 相比于向上转型来说, 向下转型没那么常见, 但是也有一定的用途.