1、面向对象的三大特性:继承、多态、封装
继承:关键字—extends, A extends B 代表A类继承了B类的成员属性和成员方法(可见的)
public class B { //定义一个B类
int a;
String b;
.....;
void fn() {
}
......;
}
public clss A extends B { //B是A的父类
}
一个类只能继承一个直接父类,java中只允许单根继承:
//错误示例
public class A extends B,C {
}
封装:保护类的属性,不被随意赋值。关键字—private,对属性进行私有化,同时要提供公共的getter/setter以便访问,
//示例代码
public class Pengunie {
String name;
int health;
private int love;
String gender;
public void setLove(int love) {
this.love = love;
}
public int getLove() {
return love;
}
}
2、访问修饰符: 访问权限控制
private: 私有的,本类内部能访问
默认的: 包级私有,本类所在的包内所有的文件都可以访问
protected:受保护的 (包级私有+子类) ,除了本包之外,继承该类的所有子类也可以访问
public: 公共的,整个工程都可以访问,工程内所有文件都可以访问
作用域 | 同一个类中 | 同一个包中 | 子类中 | 任何地方 |
private | 可以 | 不可以 | 不可以 | 不可以 |
默认修饰符 | 可以 | 可以 | 不可以 | 不可以 |
protected | 可以 | 可以 | 可以 | 不可以 |
public | 可以 | 可以 | 可以 | 可以 |
3、 static关键字
static修饰变量时,变量叫做类变量,静态变量:全体成员共享,但更多使用 类名,变量名 来调用静态变量,全类共享一个内存拷贝;往往用于公共静态常量的定义
static 数据类型 变量名 //定义静态变量
static 返回值类型 方法名() { //定义类中的静态方法
}
调用时直接用类名.方法名(),无需再创建对象
注:但静态方法不能直接访问成员变量和成员方法,需要用对象名来调用静态方法不能访问this和super。
static{}: 静态代码块,在类第一次加载的时候,运行一次
静态代码央应该定义在静态变量的后面,否则无法访问该静态变量如果有多个静态代码块,也只是运行一次,但按照顺序执行。
//示例
public class A {
静态变量;
静态代码块1;
静态代码块2;
}
执行顺序:静态变量—>静态代码块1—>静态代码块2