语法基础
类与对象
类 | 对象(具体到某个个体) |
---|---|
动物 | 狮子,老虎,狗 |
交通工具 | 飞机,火车,汽车 |
智能设备 | 平板电脑,智能手机 |
方法
- 方法,也可以说是函数,是对象的动作或能力
- 主方法:
public static void main(String[] args)
格式固定不变, 且必须存放在主类中 - 构造方法
- 类实例化为对象时,编译器自动调用的方法,用以给出对象中变量的初值。
- 构造方法必须与类同名,可以有参数,但绝对不允许有返回值。
- 通过
对象.方法
访问方法
访问控制符
访问控制符 | 同一类中 | 同一包中 | 子类 | 其它 |
---|---|---|---|---|
public | √ | √ | √ | √ |
protected | √ | √ | √ | |
默认 | √ | √ | ||
private | √ |
命名规则
类和接口名。每个字的首字母大写,含有大小写。例如,MyClass,HelloWorld,Time 等。
方法名。首字符小写,其余的首字母大写,含大小写。尽量少用下划线。例如,myName,setTime 等。这种命名方法叫做驼峰式命名。
常量名。基本数据类型的常量名使用全部大写字母,字与字之间用下划线分隔。对象常量可大小混写。例如,SIZE_NAME。
变量名。可大小写混写,首字符小写,字间分隔符用字的首字母大写。不用下划线,少用美元符号。给变量命名是尽量做到见名知意。
命名过程中尽量做到见名知意,方便后期查看和修改代码,也方便其他人员的阅读。
变量
数据类型 | 默认值 | 存储格式 | 数据范围 |
---|---|---|---|
short | 0 | 2个字节 | -32,768到32767 |
int | 0 | 4个字节 | -2,147,483,648到2,147,483,647 |
byte | 0 | 1个字节 | -128到127 |
char | /u0000 | 2个字节 | Unicode的字符范围 |
long | 0L或0l | 8个字节 | -9,223,372,036,854,775,808到9,223,372,036, 854,775,807 |
float | 0.0F或0.0f | 4个字节 | 32位IEEEE 754单精度范围 |
double | 0.0或0.0D(d) | 8个字节 | 64位IEEE 754双精度范围 |
boolean | false | 1位 | true(1)或false(0) |
注释
行注释
//
:只注释一行段注释
/*...*/
:注释若干行文档注释
/**...*/
:注释若干行,并写入 javadoc文档
创建Java文件
- 每个以
.java
为后缀的Java文件都有且只有一个主类 - 文件名与主类名必须相同
同一个类文件可以有多个类
例:
一个名为HelloWorld.java
的类文件
public class HelloWorld{
void sayHello(){
System.out.println("Hello World!");
}
public static void main(String[] args){
HelloWorld hello = new HelloWorld();
hello.sayHello();
Welcome welcome = new Welcome();
welcome.sayWelcome();
}
}
class Welcome{
void sayWelcome(){
System.out.println("Welcome to!");
}
}
程序执行结果:
Hello World!
Welcome to!
封装
如何去实现类的封装呢?
- 修改属性的可见性,在属性的前面添加修饰符
- 创建 getter/setter 方法,用来读写属性
- 在 getter/setter 方法里加入属性的控制语句,例如我们可以加一个判断语句,对于非法输入给予否定。
- 用内部类封装
定义成员内部类后,必须使用外部类对象来创建内部类对象,即 内部类 对象名 = 外部类对象.new 内部类();
如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用 this 关键字
继承
class 子类 extends 父类
final关键字可以修饰类、方法、属性和变量
final 修饰类,则该类不允许被继承
final 修饰方法,则该方法不允许被覆盖(重写)
final 修饰属性:则该类的属性不会进行隐式的初始化(类的初始化属性必须有值)或在构造方法中赋值(但只能选其一)
final 修饰变量,则该变量的值只能赋一次值,即变为常量
super关键字在父类内部使用,代表父类对象。
访问父类的属性 super.属性名
访问父类的方法 super.bark()
多态
多态引用类型转换
在我们使用多态时,经常会用到引用类型转换。引用类型转换有两种。
一种引用类型转换是向上类型转换(隐式/自动类型转换),是小类型到大类型的转换(无风险)。另一种是向下类型转换(强制类型转换),是大类型到小类型(有风险)。
比如一杯水,我们倒进壶里,这种向上转换是不存在风险的,计算机可以自动帮我们完成,所以向上类型转换又叫做自动类型转换或隐式类型转换。而如果我们想将壶里的水倒进杯子里,就可能会产生溢出,这是有风险的。计算机是不会自动完成这样的操作。但如果程序猿想要完成这样的操作,就只能强制转换。所以向下类型转换又叫做强制类型转换。