12) 面向对象 (3)
Java面向对象(3)
static关键字详解
private static int age;//静态变量
private double score;//非静态变量
public static void main(String[] args) {
Student s1 = new Student();
//new一个对象之后,可以正常调用
s1.score;
s1.age;
//类变量可以正常调用
Student.age;
Student.score;//Waring: Non-Static field 'score' cannot be referenced from a static context
}
//方法
public void run(){
}
public static void go() {
}
//静态方法和非静态方法可以调用静态方法;
//静态方法不能调用非静态方法;
public static void main(String[] args) {
//调用非静态方法
new Student().run();
//调用静态方法,可以不用new
Student.go();
}
{
匿名代码块
}
static {
静态代码块 (仅仅执行一次)
}
执行顺序:静态代码块(只执行一次),匿名代码块,构造方法
抽象类
- abstract修饰符用来修饰方法也可以修饰类。
public abstract class ClassName
-
使用extends继承。
-
继承抽象类的子类,需要重写非抽象类的方法。
-
抽象类不能使用new关键字 Waring:
'xxx' is abstract cannot be instantiated -
抽象类中可以写普通方法
-
抽象方法必须在抽象类中
接口
接口的本质是契约。
- 声明类的关键字是class,声明接口的关键字是interface
类可以实现接口,通过implements 接口
其中的方法都是public abstract
作用:
- 约束
- 定义一些方法,让不同的人实现
- 接口中所有方法都是public abstarct
- public static final 定义常量
- 接口不能被实例化,因为接口中没有构造方法
- 可以实现多个接口,使用implements
- 必须要重写接口中的所有方法。
内部类(奇葩使用)
内部类
内部类就是在类的内部定义一个类,则里面的类相对于外面的类来说是内部类,而外面的类相对于内部的类来说是外部类。
- 成员内部类
- 静态内部类
- 局部内部类
- 匿名内部类
public class Outer {
private int id;
public void out() {
//外部类;
}
public class Inner {
public void in() {
//内部类
}
}
}
- 实例化外部类:
Outer outer = new Outer(); - 实例化内部类:
Outer.Inner inner = outer.new Inner();
内部类可以访问外部类的方法
外部的内部类:
public class Out {
}
class OutOut {
//不可以使用public
}
匿名对象调用方法
new Object().method;
//没有名字初始化类,不用将实力保存到变量中

浙公网安备 33010602011771号