本文用CLASSNAME指代类名、object指代对象。

基本语法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//修饰符顺序
public static final+CLASSNAME/返回值 方法名()/变量
public abstract
//载入类
import java.io.*;
//主函数放在一个类里面
public class HelloWorld {
public static void main(String[] args) {}
}
/*
1.一个Java文件只有一个public类,文件名和public类一致
2.没有public类,文件名和任意类名一致
*/
//类创建
public static class CLASSNAME{}
abstract class Caravan{}//抽象类
//方法创建:和C语言函数创建相同
public void setFormat(String format) {}
private static void addInstance() {}
public abstract void goFast();//抽象方法:声明必须以;结尾!!
//对象创建
CLASSNAME object=new CLASSNAME();//声明为此类,调用此类的构造方法,括号里可填入参数
//变量创建
//1.类里面的变量
public static int count = 0;
//2.局部变量
int count = 0;
//Java常量
final double PI = 3.1415927;
public static final int BOXWIDTH = 6;
//强制类型转换(会有精度损失问题)
byte b = (byte)i;

此处只写出基本语法,继承、重写、重载、抽象类的语法见本系列第三篇。

构造方法

高级部分见这篇文章

1.构造方法的名称必须与类同名

2.一个类可以有多个构造方法

变量

变量可分为类里面的变量和局部变量,局部变量就不多说了,下面介绍类里面的变量。

1.成员变量(实例变量)

属于对象,是对象特有的数据(不同对象的实例变量被分配给不同的内存空间),只能被对象所调用

2.类变量(静态变量):static

属于类,实现共性数据的对象共享(所有对象的这个类变量都分配给相同的一处内存),可以被对象调用,也可以被类名调用

静态方法(static)只能访问静态变量,先于对象存在,不能用对象来调用(不可用this、super)只能用类名来调用

带来的问题是需要考虑类变量的线程安全性

修饰符

1.public

所有类可见

2.private

同一类可见

3.protected

待补全

继承问题:

(1)子类的访问权限一定要比父类的访问权限大

(2)父类中声明为 private 的方法,不能够被子类继承

4.static

见上文

5.final

final变量=常量,final方法能被继承不能被重写,final类不能被继承

6.abstract

抽象方法声明以;结尾!!!public abstract sample();

7.synchronized

遗留问题

抽象类里的private变量能否被子类访问?

继承、重写时的类型声明?

this、super的性质?

静态方法中不能使用this,super关键字。

因为this代表对象,而静态在时,有可能没有对象,所以this无法使用。

包的定义?protected的用法?