Super关键字:

Super“可以看做”是直接父类对象的引用。可以通过Super来访问父类中被子类覆盖的方法或属性。使用Super调用普通方法,语句没有位置限制,可以在子类中随便调用。

在一个类中,若是构造方法的第一行代码没有显式的调用super(.....)或者this(....);那么Java默认都会调用super(),含义是调用父类无参数构造方法。这里的super()可以省略。


1.Object中的toString()方法默认返回的字符串是什么含义?

答:类名@地址

super关键字的含义是什么?

答:直接父类对象的引用


继承树追溯:

属性/方法查找顺序:(比如:查找变量h)

1. 查找当前类中有没有属性h

2. 依次上溯每个父类,查看每个父类中是否有h,直到Object

3. 如果没有找到,则出现编译错误

4. 上面步骤,只要找到h变量,则这个过程终止

构造方法调用顺序:

构造方法第一句总是:super(...)来调用父类对应的构造方法。所以,流程就是:先向上追溯到Object,然后再依次向下执行类的初始化块和构造方法,直到当前子类为止。

注:静态初始化块调用顺序,与构造方法调用顺序一样,不再重复。


封装(encapsulation):

封装是面向对象三大特征之一。对于程序合理的封装让外部调用更加方便,更加利于写作。同时,对于实现者来说也更加容易修正和改版代码。

程序设计要求:“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合是仅暴露少量的方法给外部使用,尽量方便外部调用。

编程中封装的具体优点:

1. 提高代码安全性

2. 提高代码的复用性

3. “高内聚”:封装细节,便于修改内部代码,提高可维护性

4. “低耦合”:简化外部调用,便于调用者使用,便于扩展和协作

封装的实现:

Java是使用“访问控制符”来控制哪些细节需要封装,哪些细节需要暴露的。Java中4种“访问控制符”分别是private、default、protected、public,他们说明了面向对象的封装性,所以我们要利用他们尽可能的让访问权限降到最低,从而提高安全性。


private:表示私有,只有自己类能访问

default:表示没有修饰符修饰,只有同一个包的类能访问

protected:表示可以被同一个包的类以及其他包中的子类访问。

关于protected的两个细节:

1. 若父类和子类在同一个包中,子类可访问父类的protected成员,也可访问父类对象的protected成员。

2. 若子类和父类不在同一个包中,子类可访问父类的protected成员,不能访问父类对象的protected成员。

封装的使用细节:

1. 属性一般使用private访问权限

2. 属性私有后,提供相应的get/set方法来访问相关属性,这些方法通常是public修饰的,以提供对属性的赋值与读取操作(注意:boolean变量的get方法是is开头!)

3. 方法:一些只用于本类的辅助性方法可以用private修饰,希望其他类调用的方法用public修饰。




java子类怎么特有方法 java子类super_super构造方法为什么给子类赋值