Java的基础(一)
一、Java对象和类
1.Java是一门面向对象的语言
(一)什么是对象和类?
对象就是类的一个实例,比如说猫、狗等这些都是对象,每个对象都会有各种状态:例如它的颜色、大小等,它还有各种行为:例如吃、摇尾巴等。
类就是一类事物,比如上面的猫狗都是属于动物这个类。
一般类我们会用class,对象就是object。其实每个事物皆可为对象,狗也可以看成一个类,狗也有不同的品种,这些品种我们也可以称之为对象:例如中华田园犬、牧羊犬等。
在Java中我们给类命名,一般遵从大驼峰形式(一个良好的编码习惯会让你受益终生),比如UserName;如果是给类中的属性命名,我们遵从小驼峰的形式,比如:userName;
上面我说到了属性,每个类中都可能会有各种属性和方法,比如说刚才的狗,它的属性就有颜色、名字、年龄、大小;方法这个概念就相当于狗的各种行为:比如说吃、跑、睡;看以下代码来了解:
public class Dog {
//狗的颜色
String colour;
//狗的名字
String name;
//狗的年龄
int age;
//狗的大小(重量)
double weight;
//吃的方法
public void eat(){
}
//跑的方法
public void run(){
}
//睡的方法
public void sleep(){
}
}
上面代码中我们定义的属性也可以称之为类中的变量,变量分为:成员变量、局部变量、类变量。我们定义的几个变量就是成员变量
成员变量是定义在类中,方法体之外的,成员变量是可以被类中的方法、构造方法直接访问到,在创建对象的时候实例化。
局部变量是在方法、或者语句块中定义的变量,变量的声明和创建都是在方法被调用的时候,销毁实在调用方法结束的时候。
类变量也是声明在类中、方法体之外,但是是用static修饰的。
(二)什么是构造方法?
构造方法跟类的名称相同,一个类可以有多个构造方法
每个类都有构造方法,构造方法分为有参构造和无参构造,如果没有定义有参构造,java编译器就会默认提供无参构造,看如下代码:
//有参构造
public Dog(String colour, String name, int age, double weight) {
this.colour = colour;
this.name = name;
this.age = age;
this.weight = weight;
}
//无参构造
public Dog() {
}
(三)怎么样创建对象
之前说到对象就是类的一个实例,所以对象就是根据类来创建的。
创建对象需要使用new关键字,java关键字可以 自己搜一下,分为三步:
(1)声明:声明一个对象,包括对象的类型和对象的名称
(2)实例化:使用new关键字来实例化对象
(3)初始化:使用new关键字时就会调用对象的构造方法初始化对象
代码如下:
//主函数
public static void main(String[] args) {
//创建对象
Dog dog = new Dog();
}
我们可以通过创建对象来访问对象中的变量和方法,代码如下:
//主函数
public static void main(String[] args) {
//创建对象
Dog dog = new Dog();
//访问重量并且赋值
dog.weight = 100.0;
//访问睡的方法
dog.sleep();
}
对于类中的每一个变量,我们可以设置get和set方法来获取和设置这个变量的值
看这个例子,我们将主函数跟类分下来一个是Dog.java:
public class Dog {
//狗的颜色
String colour;
//狗的名字
String name;
//狗的年龄
int age;
//狗的大小(重量)
double weight;
//吃的方法
public void eat(){
System.out.println("狗正在吃!!!");
}
//跑的方法
public void run(){
System.out.println("狗正在跑!!!");
}
//睡的方法
public void sleep(){
System.out.println("狗正在睡觉!!!");
}
//有参构造
public Dog(String colour, String name, int age, double weight) {
this.colour = colour;
this.name = name;
this.age = age;
this.weight = weight;
}
//无参构造
public Dog() {
}
public String getColour() {
return colour;
}
public void setColour(String colour) {
this.colour = colour;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight = weight;
}
@Override
public String toString() {
return "Dog{" +
"colour='" + colour + '\'' +
", name='" + name + '\'' +
", age=" + age +
", weight=" + weight +
'}';
}
}
另一个测试类为DogTest.java:
public class DogTest {
public static void main(String[] args) {
//实例化对象
Dog dog = new Dog();
//设置狗的年龄
dog.setAge(10);
//设置狗的名字
dog.setName("阿黄");
//设置狗的重量
dog.setWeight(100.0);
//设置狗的颜色
dog.setColour("黄色");
System.out.println(dog);
//调用睡觉的方法
dog.sleep();
}
}
测试类的输出结果为:
Dog{colour='黄色', name='阿黄', age=10, weight=100.0}
狗正在睡觉!!!