final 常量只能赋值一次
如final int c=43;
c=35;//报错,无法为最终变量赋值
final double PI=3.14;//一般常量使用大写
final关键字:
修饰变量:-常量
修饰方法:-该方法不可被子类重写。但是可以被重载!
修饰类:-修饰的类不能有子类,不能被继承,比如Math、String
小数也能取余 如:
double p=10.2%3;
System.out.println(p);//是合法的
OOA 面向对象分析
OOD 面向对象设计
OOP 面向对象语言 如java
内存分析
栈(自动分配连续的空间,后进先出)
放置:局部变量
堆(不连续)
堆:放置new出来的对象,其中方法区也是堆,
一般存放:类的信息(代码),static 变量、常量池(字符串常量等)等。
static :在类中,用static 声明的成员变量为静态成员变量,或者叫做:类属性,类变量
它为该类的公用变量,属于类,被该类的所有实例共享,在类被载入时被显示初始化,
对于该类的所有对象来说,static成员变量只有一份。被该类的所有对象共享!!!
可以使用“对象.属性类”来调用。不过,一般都是“类名.类属性”。
static变量置于方法区中!
用Static声明的方法为静态方法
不需要对象,就可以调用(类名.方法名)
在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可访问非static的成员。
如果希望加载后,对整个类进行某些初始化操作,可以使用static初始化块。
是在类初始化时执行,不是在创建对象时执行。
静态初始化块中不能访问非static成员。
执行顺序:上溯到Object类,先执行Object的静态初始化块,再向下执行子类的静态
初始化块,知道我们的类的静态初始化块为止。
this:
普通方法中,this总是指向调用该方法的对象。
构造方法中,this总是指向正要初始化的对象。
this不能用于static方法
this称为隐式参数
如果类中有重载构造器:this()//通过this调用其他构造方法,且必须位于第一句
super是直接父类对象的引用。可以通过super来访问父类中被子类覆盖的方法或属性
普通方法:
没有顺序限制,可以随便调用。
构造函数中:
任何类的构造函数中,若是构造函数的第一行代码没有显示的调用
super(...);那么java默认都会调用super();作为父类的初始化函数,所以你这里的
super();加不加都无所谓
所有的构造方法第一句始终是super();
继承VS组合
"is-a"关系使用继承
"have-a"关系使用组合
封装要点:
类的属性的处理:
1、一般使用private.(除非本属性确定会让子类继承)
2、提供相应的get/set方法来访问相关属性,这些方法通常是public,从而提供对属性的
读取操作。(注意:boolean变量的Get方法是用:is开头!)
一些只用于本类的辅助性方法可以用private,希望其他类调用的方法用public