一、继承
所谓继承是指一个类的定义可以基于另外一个已经存在的类,即子类基于父类,从而实现父类代码的重用,子类能吸收已有类的数据属性和行为,并能扩展新的能力。
如: class father{ //父类
属性,方法,构造方法
}
class son extends father{ //子类
}父类的东西都可以继承,还可以改变父类的东西,创造自己新的东西
二、static(静态)
1.static属性是类的所有对象共享的,静态属性在内存中只有一个存放的地址。
2.static方法可以使用对象调用,也可以直接用类名调用,建议用类名直接调用。
如:public class Test{
int a=5;
public static void Fa{
方法体
}
就可以用Test.Fa调用静态的方法(类名+方法名)
3.静态块只有在类加载的时候被执行一次,不管创建多少个对象,都不会再执行。
如: static(system.out.println(“你好”))
三、final
用于声明属性,方法和类
属性:定义就必须直接赋值或者在构造方法中进行赋值,并且后期都不能修改。
通常用来定义一些常量 如:
final double π=3.1415926;一旦定义了后面是不能被修改的
在声明的时候同时赋值或者在构造方法中进行赋值,必须保证有唯一确定的值。
final修饰类,不能被继承
四、super关键字
1.在子类构造方法中要调用父类的构造方法,需要注意:super语句只能出现在子类构造方法体的第一行。
2.当子类方法体中的局部变量或者子类的成员变量与父类成员变量同名时,即子类局部变量覆盖父类成员变量时,用“super.成员变量名”来引用父类成员变量
3.当子类的成员方法覆盖了父类的成员方法时,也就是子类和父类有完全相同的方法定义(方法体可以不同),此时,用“super.方法名(参数列表)”的方式访问父类的方法。
4.与this的区别,this通常指代当前对象,super通常指代父类。
在子类构造方法中要调用父类的构造方法,需要注意:super语句只能出现在子类构造方法体的第一行。
如:class son extends father{
son{ //子类的构造方法
super();} //首行先写super调用父类的构造方法
}
package test.Java; class f{ //定义父类 int age; //属性值 String name; f(){ //构造方法 age = 1; name = "ffff"; System.out.println("father 的构造"); System.out.println("dkjf"+age); } void eat(){ //方法 System.out.println("父亲吃东西"); } } class s extends f{ //定义子类 s(){ //子类的构造方法 super(); //构造方法的第一行写,默认父类的构造方法 System.out.println("son的构造"); } int eat(int a){ //升级父类的方法 System.out.println("--"+age); age=a+5; System.out.println("--"+super.age); return age; } } public class PM620 { public static void main(String[] args) { // TODO Auto-generated method stub s son = new s(); System.out.println("dkleshofs"+son.age); son.eat(2); System.out.println(son.age); } }
五.this关键字代表自身
1.使用this关键字在自身构造方法内部引用其它构造方法
2.使用this关键字代表自身类的对象
直接使用this
使用this关键字引用成员变量
使用this关键字引用成员方法
注意:this关键字必须放在非静态方法里面
六、方法的覆盖
子类可以重写父类中某一个方法,称为方法覆盖,也称方法重写,是继承中非常重要的知识点。
如果子类需要修改从父类继承到的方法的方法体,就可以使用方法覆盖。
覆盖的原则:
同名; 同参 ;同返回值; 访问权限不能缩小