final
final是一个关键字,表示最终的意思,可以用来修饰类,变量和方法
- 修饰类:表示该类是最终类,不能被继承
- 修饰变量:表示该变量是常量,不能再次被赋值
- 修饰方法:表示该方法是最终方法,不能被重写
static
static是一个关键字,可以修饰成员变量和方法
- 被类的所有对象共享
- 可以通过类名调用
- 优先于对象的存在
- 随着类的加载而加载
注意
-
非静态的成员方法:
-
能访问静态的成员变量
-
能访问非静态的成员变量
-
能访问静态成员方法
-
能访问非静态的成员方法
-
静态成员方法
- 能访问静态的成员变量
- 能访问静态成员方法
- 不能访问非静态的成员变量
- 不能访问非静态的成员方法
需要注意的是:
静态方法中不能出现this,super这样的关键字
原因是:静态是随着类的加载而加载,this,super这样的关键字是随着对象的创建而存在,先进内存的,不能访问后进内存的。
代码示例
public class Student {
private String name;
private static int age;
public static void method1(){
//不允许
// this.method3();
//不允许
// System.out.println(name);
//允许
System.out.println(age);
}
public void method2(){
this.method3();
System.out.println(this.name);
System.out.println(this.age);
}
public void method3() {}
}
抽象类
抽象类就是提供方法但是不去实现的类,例如:我们定义一个动物类,动物类中有一个吃的方法动作,但是我们并不实现吃这个动作,而是交由它的子类去实现吃这个行为,那么我们可以将这个类定义为抽象类:
public abstract class Animal {
public abstract void eat();
}
如果一个猫类cat,继承Animal类,那么cat类就必须实现Animal类中的抽象方法。不然程序会报错。
public class Cat extends Animal{
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
接口
接口就是用来实现特定方法的一个类。通常一个类用implements来实现一个接口
//定义一个jump的接口
public interface Jumpping {
public void jumpping();
}
//实现接口
public class Cat implements Jumpping{
@Override
public void jumping() {
System.out.println("猫跳高");
}
}
接口的成员特点:
- 成员变量:接口有成员变量,而且变量只能是final类型的常量
- 构造方法:没有构造方法
- 成员方法:有成员方法,只能是抽象方法
类与类,类与接口以及接口与接口之间的关系
概念
类与类
- 继承关系,只能单继承,但是可以实现多层继承
类与接口
- 实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口
接口与接口
- 继承关系,可以单继承,也可以多继承
代码示例
//接口的继承,可以多继承
public interface Son extends Father,Mother {
...
}
//类的多继承接口
public class Family implements Son,Father,Mother{
...
}
包
包的作用就是对类进行分类管理
- 按照功能分类
com.xxx.add
AddStudent
ADDTeacher
com.xxx.delete
DeleteStudent
DeleteTeacher
- 按照模块分
com.xxx.student
AddStudent
DeleteStudent
com.xxx.teacher
AddTeacher
DeleteTeacher
权限修饰符
- private : 只能在本类中使用
- 默认:都可以使用
- protected:只能在同一个包中使用
- public:等同默认情况
网友评论