实例变量和类变量的区别
定义
类变量:声明变量成员时,用关键字static修饰。
实例变量:声明变量成员时,没有被static修饰。
区别
- 实例变量被某个对象私有,静态变量被所有对象共享(一个对象改变这个变量的值会影响其它对象的这个类变量)。
- 类的字节码文件加载到内存,如果该类没创建对象,实例变量不会分配内存。类中的类变量会分配相应的内存空间。
- 类变量不仅可以通过对象访问,也可以直接通过类名访问。实例变量只能通过对象访问,不能使用类名访问。
实例方法和类方法的区别
- 在当前类的字节码文件加载到内存时,实例方法和类方法分配入口地址的方法不同:实例方法:只有该类创建对象后,类中的实例方法才分配入口地址。类方法:该类加载到内存时,就分配相应的入口地址
- 调用方式不同:实例方法:不能通过类名调用,只能通过对象调用。类方法:不仅可以被类创建的对象调用执行,也可通过类名调用
- 方法操作变量方面:实例方法:实例方法不仅可以操作实例变量也可操作类变量。类方法:不可操作实例变量,因为类创建对象之前,实例成员还未分配内存。
方法重载和方法重写的区别
- 方法重载:一个类中有多个方法具有相同的名字,但是参数必须不同(参数的个数不同、参数的个数相同但对应位置类型不同),与访问修饰符和返回值无关。
- 方法重写:发生在子类与父类中、方法名相同、参数列表相同、返回值类型相同或者是其子类、访问权限不能严于父类(权限的范围比父类大)。
- 引用自
几个关键字
this关键字(访问本类内容)
- this关键字只能在方法内部使用。
- this代表‘当前对象’的引用。
- 如在方法内部调用同一个类的另一个方法可不使用this关键字,直接调用。
- this关键字不能出现在类方法中,因为只是可能没有任何对象产生。
用法:
1、在本类成员变量中,访问本类的成员变量
2、在本类成员方法中,访问本类的另外一个成员方法
3、在本类构造方法中,访问本类的另外一个构造方法
注意:
1、this(@@@)调用也必须是构造方法中的第一个,唯一一个
2、super()和this()调用只能出现一个,不能同时使用
super关键字(访问父类内容)
- super必须出现在子类中(方法、构造方法中)
- 用来访问父类成员(变量、方法、构造方法)
- 在子类方法中访问父类的成员变量;在子类方法中访问父类的成员方法;在子类的构造方法中访问父类的构造方法。
final关键字
- final类
可以使用final将类声明为final类。final类不能被继承,既不能有子类。 - final方法
如果final修饰父类的方法,那么这个方法不允许被子类重写,不允许子类隐藏可以继承的final方法 - 常量
成员变量或局部变量被修饰为final,那他就是常量。在运行过程中不允许发生改变,必须指定该常量的值。