Java
作为一种面向对象语言,支持以下基本概念:
- 多态
- 继承
- 封装
- 抽象
- 类 : 类是一个模板,它描述一个类对象的行为和状态
- 对象 : 对象是类的一个实例,有状态和行为
- 实例
- 方法
- 重载
Java 中的类
类可以看成是创建 Java
对象的模板.
eg· 创建一个 Dog
类, Dog
拥有 breed
, age
, color
三种状态,并且还拥有 barking
, hungry
, sleeping
三种行为.
public class Dog {
// 狗的品种
String breed;
// 狗的年龄
int age;
// 狗的颜色
String color;
// 狗叫方法(行为)
void barking() {
System.out.println("狗开始叫了");
}
// 狗饿了方法
void hungry() {
System.out.println("狗饿了");
}
// 狗正在睡觉
void sleeping() {
System.out.println("狗子正在睡觉");
}
}
一个类可以包含以下类型的变量:
- 局部变量 : 在方法、构造方法或者语句块中定义的变量被称为局部变量,变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁
- 成员变量 : 成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
- 类变量 : 类变量也声明在类中,方法体之外,但必须声明为static类型
构造方法
每个类都有构造方法。如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认构造方法,默认的构造方法是 类名()
,这里是 Dog()
. 当我们自定义了一个构造方法的时候,这时候Java编译器不再会为该类创建一个默认的构造方法
在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。
下面为 Dog
类创建构造方法
class Dog {
// 狗的名字
String name;
// 狗的品种
String breed;
// 狗的年龄
int age;
// 狗的颜色
String color;
// 构造方法
public Dog(String name, String breed, int age, String color) {
this.name = name;
this.breed = breed;
this.age = age;
this.color = color;
System.out.println("狗的名字叫" + this.name + ",今年" + this.age + "岁了," + "品种是" + this.breed + ",是一条" + this.color + "的狗.");
}
public Dog(String breed) {
this.breed = breed;
}
public Dog(String breed, int age) {
this.breed = breed;
this.age = age;
}
public Dog(String breed, int age, String color) {
this.breed = breed;
this.age = age;
this.color = color;
}
// 狗叫方法(行为)
public void barking() {
System.out.println(this.name + "开始叫了");
}
// 狗饿了方法
public void hungry() {
System.out.println(this.name + "饿了");
}
// 狗正在睡觉
public void sleeping() {
System.out.println(this.name + "正在睡觉");
}
}
以上代码,给Dog
类创建了四个构造方法
public Dog(String name, String breed, int age, String color);
public Dog(String breed);
public Dog(String breed, int age);
public Dog(String breed, int age, String color);
由于这里并没有创建 Dog()
构造方法,所以在创建一个对象的时候,不能使用 Dog dog = new Dog()
方式去创建了.
创建对象
对象是根据类创建的。在Java
中,使用关键字new
来创建一个新的对象。创建对象需要以下三步:
- 声明 : 声明一个对象,包括对象名称和对象类型
-
实例化 : 使用关键字
new
来创建一个对象 -
初始化 : 使用
new
创建对象时,会调用构造方法初始化对象
eg·
public class Test {
public static void main(String[] args) {
Dog dog1 = new Dog("旺财", "中华田园犬", 2, "黑色");
dog1.barking();
dog1.sleeping();
dog1.hungry();
Dog dog2 = new Dog();
dog2.name = "果子";
dog2.age = 1;
dog2.breed = "萨摩耶";
dog2.color = "白色";
dog2.sleeping();
dog2.hungry();
dog2.barking();
}
}
class Dog {
// 狗的名字
String name;
// 狗的品种
String breed;
// 狗的年龄
int age;
// 狗的颜色
String color;
// 构造方法
public Dog() {}
public Dog(String name, String breed, int age, String color) {
this.name = name;
this.breed = breed;
this.age = age;
this.color = color;
System.out.println("狗的名字叫" + this.name + ",今年" + this.age + "岁了," + "品种是" + this.breed + ",是一条" + this.color + "的狗.");
}
public Dog(String breed) {
this.breed = breed;
}
public Dog(String breed, int age) {
this.breed = breed;
this.age = age;
}
public Dog(String breed, int age, String color) {
this.breed = breed;
this.age = age;
this.color = color;
}
// 狗叫方法(行为)
public void barking() {
System.out.println(this.name + "开始叫了");
}
// 狗饿了方法
public void hungry() {
System.out.println(this.name + "饿了");
}
// 狗正在睡觉
public void sleeping() {
System.out.println(this.name + "正在睡觉");
}
}
编译以上代码,打印结果为:
编译结果类创建的成员变量和方法,默认是public
类型的,如果需要设置成公共的,可以省略public
;如果需要设置成私有的,就需要使用private
对成员变量和方法进行修饰
源文件声明规则
当在一个源文件中定义多个类,并且还有import
语句和package
语句时,要特别注意这些规则:
- 一个源文件中只能有一个
public
类 - 一个源文件可以有多个非
public
类 - 源文件的名称应该和
public
类的类名保持一致。例如:源文件中public
类的类名是Employee
,那么源文件应该命名为Employee.java
- 如果一个类定义在某个包中,那么
package
语句应该在源文件的首行 - 如果源文件包含
import
语句,那么应该放在package
语句和类定义之间。如果没有package
语句,那么import
语句应该在源文件中最前面 -
import
语句和package
语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包声明
网友评论