1. 静态
1.1 概述
1.关键字 static
2.结论:
static修饰的成员变量,所有的对象都共享该变量。并且该变量随着类的加载而加载,并且只加载一 次。
代码:
public class Static静态 {
public static void main(String[] args) {
A a=new A();
a.add();
A a1=new A();
a1.add();
}
}
class A{
static int a;
int b;
public void add() {
a++;
b++;
System.out.println(a+":"+b);
}
}
1.2 静态成员的调用
1.静态成员又称为类成员。
2.调用格式:
类名.方法(参数)/属性
2. 继承
2.1 面向对象的特征
1.封装
2.继承
3.多态
4.抽象
2.2 继承
1.学生类 老师类 工人类
2.继承:
① 关键字: extends
格式:
class 子类 extends 父类{}
② 继承的好处: 提高代码的重用性
③ 方法的重写:
1》前提: 当从父类继承的方法不满足子类自身需求的时候,需要重写父类的该方法。
2》方法的重写:
在具有继承关系的子父类之间,在子类中,由于继承的方法不符合子类自身的要求,子类重写 父类方法,方法名称 参数列表 返回值类型都相同。
④ super: 代表的是父类
格式 :
super.方法(参数)/属性
注意:
this与super都不能存在静态方法中。
当this或super作为指代构造方法时,必须在构造方法中,并且在第一行的位置。
不能递归调用。
无论子类的构造方法中是否显式指定了调用父类的构造方法,没有显式指定,调用的super(),也可以显式指定super(参数)
有this无super。
对于一个类的构造方法来说,如果有显式声明构造方法,一定要有一个无参的构造。
- 不能继承的成员
①通过private修饰的成员,不能被子类继承
②构造方法不能被子类继承。
- 继承的特点
①单继承:子类只有一个父类
②多层、重继承:子类可以进行多层的继承关系。
代码:
public class 继承 {
public static void main(String[] args) {
Worker w=new Worker();
w.age=1;
Teacher t=new Teacher();
t.eat();
}
}
class Student{
String name;
int age;
String stuNo;
public void eat() {
System.out.println("学生吃饭");
}
public void sleep() {
System.out.println("睡觉。。。");
}
public void study() {
System.out.println("think in java");
System.out.println("good good study day day up");
}
}
class Teacher extends Person{
String tNo;
//员工编号
@Override //检测是否是重写方法。
public void eat() {
System.out.println("点外卖。。。。吃饭");
}
}
class Worker extends Person{ }
class Person{
String name;
int age;
public void eat() {
System.out.println("吃饭");
}
public void sleep() {
System.out.println("睡觉。。。。");
}
}
2.2.1 隐式三步
- 隐式三步:构造方法执行之前有隐式三步。
1). super()
2). 构造代码块:{ }
3). 显示初始化
其中2,3按照代码的顺序执行。
总结:
对于具有继承关系的子类对象,1.先初始化继承父类的成员。每一个都要经历隐式三步,才会执行构造函数中的代码。
2.2.1 final关键字
1. final修饰的成员:
① 类:不能被继承
②方法:不能被重写
③变量:常量
2. final finally finalize()
finally 表示 无论是try还是catch最终必须被执行的操作。
finalize() 表示对象垃圾回收的方法。