您的位置:首页 > 编程语言 > Java开发

RE:JAVA学习-了解内存管理+继承的意义

2017-08-15 12:43 239 查看
一.内存管理:由JVM管理———-了解

1>堆:

1.1>用于存储所有new出来的对象(包括成员变量)

1.2>垃圾:没有任何引用所指向的对象

垃圾回收器(GC)不定时到内存中清扫垃圾,

并不一定 一发现垃圾就立即回收,

回收过程是透明的(看不到的)

1.3>内存泄漏:不再使用的内存没有被及时的回收

(建议 不再使用的对象,及时将引用设置为null)

1.4>成员变量的生命周期:

创建对象时存储在堆中,对象被回收时一并被回收

2>栈:

2.1>用于存储正在调用的方法中的所有局部变量来了(包括参数)

2.2>JVM会为每一个正在调用的方法分配一块对应的栈帧,

栈帧中存储方法中的局部变量(包括擦擦念书),

方法调用结束时,栈帧被清除,局部变量一并被清除

2.3>局部变量的生命周期:

调用方法时存在栈中,方法结束时与栈帧一并被清除

3>方法区:

3.1>用于存储.class字节码文件(包括方法)

3.2>方法只有一份,通过this来区分具体的对象

二.继承:

1>作用:实现代码的复用

2>通过extends来实现继承

3>父类:所有子类所共有的属性和行为

子类:子类所特有的属性和行为

4>子继承父类之后,子类将具有:子类+父类

5>一个父类可以有多个子类

一个子类只能有一个父类———-单一继承

6>继承具有传递性

7>java规定:构造子类之前必须先构造父类

子类构造方法中若字节不调用父类对的构造方法,则默认super()默认调用父类的无参构造

若自己调用类父类的构造,则不再调用

super()调用父类构造,必须位于子类构造方法的第一行

public class SuperDemo {

public static void main(String[] args) {
Coo d=new Doo();
}
}
class Coo{
Coo(int n){
System.out.println(n);
}
}
class Doo extends Coo{
Doo(){
super(5);
System.out.println("doo");
}
}


三.super:指代当前对象的父类对象

用法(与this类似):

1>super.成员变量名 访问父类的成员变量

2>super.方法名() 调用父类的方法

3>super() 调用父类的构造方法

四.向上造型–多态的一种体现

1>父类型的引用指向子类的对象 Person p= new Student();

2>能点出来什么,看引用的类型

public class UpTypeDemo {

public static void main(String[] args) {
Eoo o3=new Foo(2);//向上造型
o3.e=1;
//o3.f=2;//不能访问子类的对象
o3.show();//能使用什么方法看引用的类型
//o3.test();
}
}
class Eoo{
int e;
Eoo(){
System.out.println("Eoo");
}
void show(){
}
}
class Foo extends Eoo{
int f=1;
Foo(int n){
f=n;
System.out.println(f);
System.out.println("FOO");
}
void test(){

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: