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()调用父类构造,必须位于子类构造方法的第一行
三.super:指代当前对象的父类对象
用法(与this类似):
1>super.成员变量名 访问父类的成员变量
2>super.方法名() 调用父类的方法
3>super() 调用父类的构造方法
四.向上造型–多态的一种体现
1>父类型的引用指向子类的对象 Person p= new Student();
2>能点出来什么,看引用的类型
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(){ } }
相关文章推荐
- RE:JAVA学习-了解线程
- Java面向对象03-对象内存管理,继承的意义
- RE:JAVA学习-深入继承+访问控制
- Java学习----封装 、继承、 内存管理
- RE:JAVA学习-了解对象和类+数组
- 你想学习JAVA,那你了解她的历史背景吗?
- JAVA学习【知】继承
- Java学习总结之第五章 继承
- JAVA学习提高之----了解Swing的好地方
- 学习Java.对于继承和多态的随堂笔记
- 今天学习了Java中类的继承
- java 学习 私有类实现接口 ,一个类继承来的方法和接口实现方法重复第八天
- objective-c学习笔记第五章《objective-c 继承与java中的区别》
- JVM学习笔记(1、 基本结构;2、Java代码编译和执行的整个过程3、内存管理和垃圾回收 4、 内存调优 )
- java学习 --接口的多重继承
- java学习 --接口的多重继承
- Java 学习之了解 Java 的运行环境
- Java 学习笔记 (3) -抽象类 abstract 接口 interface 内部类 inner class 继承 extends 实现 implements 包 package
- Java学习笔记---13.面向对象编程08-Java中继承的概念,子类实例化过程,super()及方法复写
- 学习JAVA继承关系很好的例子