如果类的某个属性,不管创建多少个对象,属性的存储空间只有唯一的一个,那么这个属性就应该用static修饰,被static修饰的属性被称为静态属性。
static属性可以使用对象调用,也可以直接用类名调用。
静态属性是类的所有对象共享的,即不管创建了多少个对象,静态属性在内存中只有一个。
如果某个方法不需要与某个特定的对象绑定,那么该方法可以使用static修饰,被static修饰的方法称为静态方法
tatic方法可以使用对象调用,也可以直接用类名调用,建议用类名直接调用。
2:final 用于声明属性,方法和类
属性:定义就必须直接赋值或者在构造方法中进行赋值,并且后期都不能修改。
方法:定义必须有实现代码,并且子类里不可被覆盖。
类:不能被定义为抽象类或是接口,不可被继承
(1)final修饰属性、局部变量,值不能被修改
(2)final修饰类,不能被继承
(3)final修饰方法,不能被子类覆盖
当final修饰属性时,基本数据类型的属性将成为常量,不能被修改
3:属性可以使用final修饰,局部变量也可以
属性的生命周期很长,随着类加载或者创建对象被初始化,直到没有对象引用才回收
局部变量生命周期很短,执行某个方法时临时被初始化,方法结束即被回收
属性可以在整个类中使用,局部变量只在当前方法中使用
继承机制是面向对象程序设计不可缺少的关键概念,是实现软件可重用的根基,是提高软件系统的可扩展性与可维护性的主要途径。
所谓继承是指一个类的定义可以基于另外一个已经存在的类,即子类基于父类,从而实现父类代码的重用,子类能吸收已有类的数据属性和行为,并能扩展新的能力。
4:super关键字代表父类的引用,在程序中主要的用途
在子类构造方法中要调用父类的构造方法,需要注意:super语句只能出现在子类构造方法体的第一行。
当子类方法体中的局部变量或者子类的成员变量与父类成员变量同名时,即子类局部变量覆盖父类成员变量时,用“super.成员变量名”来引用父类成员变量
当子类的成员方法覆盖了父类的成员方法时,也就是子类和父类有完全相同的方法定义(方法体可以不同),此时,用“super.方法名(参数列表)”的方式访问父类的方法。
与this的区别,this通常指代当前对象,super通常指代父类
5:this关键字代表自身,在程序中主要的用途
使用this关键字在自身构造方法内部引用其它构造方法
使用this关键字代表自身类的对象
直接使用this
使用this关键字引用成员变量
使用this关键字引用成员方法
6:子类可以重写父类中某一个方法,称为方法覆盖,也称方法重写,是继承中非常重要的知识点。如果子类需要修改从父类继承到的方法的方法体,就可以使用方法覆盖。
方法覆盖的原则
同名
同参
同返回值
访问权限不能缩小