类的加载和内存分析
-
栈
-
栈帧
-
存放局部变量
-
先进后出
-
线程私有的,他的生命周期与线程相同
-
-
堆
-
存放对象
-
堆内存被所有线程共享
-
-
方法区
-
静态变量+常量+类信息(版本、 方法、字段等)+运行时常量池存在方法区中
-
它避免了频繁的创 建和销毁对象而影响系统性能
-
封装
封装--->封+装---->将类中的信息进行一个隐藏封存
封装指的是将java中的信息隐藏起来,对于这些信息的操作我们可以通过定义一个方法暴露出去
-
封装的简单使用
-
private 数据类型 成员变量名
-
-
获取属性的get方法---外界可以使用此方法去访问被私有化的属性
-
public 返回值类型(对应属性的数据类型) get成员变量名(){ return 成员变量名; }
-
-
给属性的set方法-----外界可以通过此方法给私有化的属性进行赋值
-
public void set成员变量名字(数据类型 形参名){对变量进行赋值操作}
-
对象的格式化输出
-
toString()方法可以完成对对象信息的格式化输出
继承
子类继承父类即子类可以通过继承去拥有父类的所有成员,并且子类还可以有自己的属性,方法
构造器
子类继承父类至少要调用父类中的一个构造器,默认调用的是父类的无参构造器
问题:子类为什么要去调用父类中的构造器???
子类在继承父类的时候去舒适化父类
-
子类中的构造器都需要直接或者简介的去调用父类中的构造器,默认的使用是无参构造器,若父类中没有无参构造器,那么我们就需要使用super(实际参数)的形式去调用父类的构造器
注意:super(实际参数)只能出现在行首--->super(实际参数)和this(实际参数)和this(实际参数)只能出现一个
代码块
{ 代码体 }
用于类的一些初始化操作
代码块优先于构造器
静态代码块
优先于代码块的执行, 只被执行一次static{ 代码体 }