为什么要有包名:解决类名冲突的问题;
重写:子类的方法名和参数列表于父类的方法相同,但方法的实现不同;当子类对象的重写方法被调用时
无论通过父类的引用还是子类的引用来调用,运行的是子类的重写后的版本;
重载和重写的区别:
1.重载是指在一个类中定义多个方法名相同但参数列表不同的方法,在编译时根据参数的个数和类型来决定绑定哪个方法;
2.重写是指在子类中定义和父类完全相同的方法,在程序运行时,根据对象的类型不同(不是引用类型)而调用不同的版本;
局部变量:
1.定义在方法中;
2.方法被调用时,存在栈中,方法调用结束从栈中清除。
3.没有默认值必须自行设定初始值
成员变量:
1.定义在类中,方法外;
2.类被实例化后,存在堆中,对象被回收时,成员变量失效。
3.有默认初始值,可以不显示初始化;
JVM:的作用:为java程序提供并管理所需要的内存空间;JVM内存分为 堆,栈,方法区,分别用于存储不同的数据;
堆:用来放new关键字所创建的对象;当一个对象没有任何引用时视为被放弃的对象,用System.gc();回收
栈:用于存放方法中的所有局部变量,即引用变量
方法区:类的各种信息(包括方法)都在方法区中存储;
继承:
子类继承父类,当父类只有有参构造,没无参构造时候,在子类的构造方法中必须在第一行调用super()来调用父类的内容;
。
访问控制修饰符 =================================================
==============================================static、final
static变量是属于类的变量可以通过类名来引用,存在方法区中,不属于对象的数据结构
final 关键字修饰成员变量,意为不可改变。(也可以修饰局部变量,使用 );
final关键字修饰的方法不能被重写(意义:防止子类在定义方法时候造成不经意的重写);
final关键字修饰的类不能被继承:例如String.Math Integer Double等基础类不能被继承。