java后续的所有概念,几乎都是围绕类进行操作和描述
最开始我们学到,Java的源文件后缀为.java,编译后生成.class文件,之后交由虚拟机运行。而生成.class文件的数量则取决于源文件.java中的文件,如以下程序:
class classYest{
static void test(){
System.out.println("Test Class");
}
}
public class Main {
public static void main(String[] args) {
System.out.println("Hello World");
classYest.test();
}
}
最后会生成下面两个可被虚拟机执行的.class文件
(基础)类的调用
类在程序中是可以随意调用的,如System.out.println()就是对System类的调用
而之前学到的控制台输入操作,则是类的另一种调用
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
System.out.println(a);
即用类创建一个对象,对对象进行独立的类的操作调用
如" System ios = new System(); "语句会报如下错误
类的基本构建格式
public class Beginning {
//属性
int Integer;
Character Character;
//静态代码块
static {
//System.out.println("static block");
}
//构造
public Beginning() {
}
//方法
public void begin(){
System.out.println("Beginning");
}
}
属性是属于类的变量,通过 类名(或生成的对象名).属性变量名 使用
静态代码块处于最高优先级,其中的代码只在程序第一次调用类执行一次
构造是类唯一不可缺少的部分,每次调用类声明对象都会执行其中代码
类中允许存在相同命名的构造或方法,但是其参数不能相同,程序根据不同的参数区分执行的构造或方法,这就是重载,如方法的重载,但是没有看到构造重载这一说。
类的继承
public class 子类类名 extends 父类类名 {
}
只有单继承的逐级关系,子类继承父类的所有属性和方法,存储的逻辑关系为子类包含父类,子类和父类相同的属性和方法不会冲突,而是默认执行子类的属性和方法,即方法的重写
多态
继承关系确立后,可将子类new给父类,此时只能使用父类的属性和方法。通过强转仍可以赋给子类的变量,继续使用子类的属性和方法。
抽象类和抽象方法
即无实例的类和方法,因此在继承等操作时方法都要重写,让Java能够保证找到实例。
接口
public interface Interface {
public static final String FIELD = "value";
public abstract void method();
}
其中 "public static" "public abstract" 可以省略
public class 类名 implements 接口1, 接口2, .... {
}
注:继承和接口可以写在一起
内部类
(实例化案例)
Outer out = new Outer();
In in = out.new In();//这个是内部类实例化的语法
in.inMethod();
或
In in = new Outer().new In();//这个是内部类实例化的语法
in.inMethod();
成员内部类
public class Outer {
int num = 1;
public class In{
int num = 2;
public void Method() {
int num = 3;
System.out.println(num);
System.out.println(this.num);
System.out.println(Outer.this.num);
}
}
}
静态内部类
public class Outer {
public static class In{
public void Method() {
System.out.println("静态内部类方法");
}
}
}
//静态成员要通过类名访问
public class Test {
public class In{
Outer.In in = new Outer.In();
in.Method();
}
}
导包后可写为:
In in = new In();