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

来源:互联网 发布:工商管理就业知乎 编辑:程序博客网 时间:2024/05/18 09:19

一.内存管理:由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(){    }}
原创粉丝点击