java学习随手记

来源:互联网 发布:阿里云 连接 腾讯云 编辑:程序博客网 时间:2024/06/05 04:21

1. 静态常量非静态常量 区别

为什么在编写代码时,需要将:
private final int ABC
写为
private static final int ABC

原因:
什么叫常量? 一般来说就是不会变的量

静态: 对于该类的对象来说,都只有一个,叫类变量
非静态: 每个该类的对象都各有一个,叫成员变量.

因为是常量,不会变的,所有的对象都是一样的,所以就只需要一个就够了.

工商银行卡类:他们有一个静态的银行卡名称叫:工商银行卡–>静态
每个卡又月自己的卡号–>非静态.

在创建对象的时候,需要每个成员变量(非静态)开辟内存空间,类变量(静态变量)则是在类加载的时候就创建好了.

简而言之就是:
减小内存开销,static,保证了你的ABC变量在内存中只有一个,而且唯一;


2. 向上转型

对于向上转型的理解,看到一篇文章解析很好,抄录下:

当一个儿子长大成人娶妻生子之后,他便“向上转型”为一个父亲了,呵呵,他除了非常私有的(private)一些情况保持不变外,如姓名,老婆的名字等等外,其他的属性(public,protected,friendly)都成为一个标准的父亲应有的属性(被覆盖了),如对家庭的责任感,由做儿子时的“低”变为了父亲应有的“高”;自由的程度,由作儿子时的“高”变为了作父亲后的“低”等等类似的。而他作儿子时一些特有的(不属于父亲应有的或者说父类没有的)作为(方法)在其成为父亲后便被舍弃了,如恣意妄为,夜不归宿等等。而正常的行为,比如挣钱的方法,每个父亲肯定不尽相同,作son时的方法也就保存了下来(覆盖了父类的方法)。

原文章链接:向上转型原作者链接