JAVA学习笔记之继承和父类子类实例变量的初始化内存分析图

原创
2017/01/24 17:43
阅读数 635

面向对象的四种特点

1.可复用,2.可维护,3.可扩展,4.灵活性强

继承 :

Why: 目的是复用代码,体现面向对象的可复用。当多个类定义相同的方法和属性时,为了不让相同的属性和方法重复写N遍,就可以吧这些属性和方法放到一个类中,其他类就可以扩展它,使每个类重复使用这个类的代码,这个过程体现啦可复用。

What: 扩展,extends相当于在原有类上添加新的属性,方法。不用重头开始写,直接复用以前类的方法和属性。当很多类中重复代码过多时,就可以单独定义一个类,这个类的内容就是这些重复的代码,然后其他类继承它。

被继承的类中属性,最好用protected修饰,表示子类可以访问。

How: public class SonClass extended FatherClass{

}

子类能不能访问父类的属性和方法,主要看访问权限修饰符。

Private 子类不可以访问,只可以是本类可以访问,子类不能继承。

Default 非本包不可以访问,即本包可以访问。本包子类可以继承,其他包子类不能继承。

Protected 受保护的,子类可以被继承。

父类 也叫 基类 ,超类。

子类 也叫 派生类,衍生类。

对象的初始化

1.给实例变量分配空间,并默认初始化。

2.声明时是初始化,初始块初始化。

3.构造函数初始化。

面试题1:

子类对象中有没有父类中private修饰的实例变量?

答:其实是有的,继承不等于含有,创建子类对象时,底层隐式的创建父类对象,父类对象含有父类所有的属性(包含private),但是继承不等于含有。

如果是类变量,则也有。应为static 修饰的属性分配空间在方法区。

在子类中 要访问父类 就要用super

在new创建对象时,对于构造函数不是调用。在子类对象构造函数中有一个super(),这个函数提示父类使用父类的构造函数。Super()提示系统使用父类的无参构造函数。

Super的使用方法:

1.想访问父类对象的属性时。

2.提示系统使用父类的构造函数

super(); //提示系统使用父类的默认的构造函数

3.super.方法名();调用父类的方法;并保留父类行为

面试题2:同名属性的隐藏:如果子类定义一个和父类同名的属性时,这个子类对象将会对父类的同名属性进行隐藏。

真正的继承?

实例变量 可以使用this 直接访问 叫继承(我的)

继承对象初始化顺序(主要是实例变量):

父类对象:

2.给实例变量分配空间、默认初始化 3.声明时初始化、初始化块初始化 4.构造函数初始化

子类对象:

1.给实例变量分配空间、默认初始化 5.声明时初始化、初始化块初始化 6.构造函数初始化内存图:

2.

JAVA学习笔记之继承和父类子类实例变量的初始化内存分析图

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部