我们在前面的文章中回顾了方法的定义和方法的调用,以及了解了面向对象的初步认识,我们本篇文章来了解一下类和对象的关系,还是遵循结合现实的方式去理解,不是死记硬背。
使用new关键字进行创建对象。
使用new关键字的时候,除了分配内存空间之外,还会给创建好的对象进行默认的初始化以及对类中的构造器的调用。
我们直接用代码进行展示
1、首先,程序中只允许存在一个main方法,我们可以新建一个包,然后新建一个类用于程序入口,其他的类里面,就不去写main方法了,这个在以后的代码编写中也要注意,要养成习惯。
2、我们在Application中,写我们最熟悉的main方法。
package oop.Demo02;
//一个项目应该只存在一个main方法。
public class Application {
public static void main(String[] args) {
}
}
3、然后我们再创建一个Student类,学生类,我们在这个类里面写属性和方法,一个类中,只能存在属性和方法!!!
package oop.Demo02;
//学生类
public class Student {
//属性,字段
String name;
int age;
//方法
public void study()
{
System.out.println(this.name+"正在学习");//this代表,当前类
}
}
4、我们将Student类实例化,要在main方法中。
package oop.Demo02;
public class Application {
public static void main(String[] args) {
//类:抽象的,进行实例化
//类实例化后,会返回一个自己的对象。
//student对象,就是一个Student类的具体实例!
Student student = new Student();
Student xiaoming = new Student();
Student xiaohong = new Student();
}
}
我们在创建对象的时候,会看到Student student = new Student();,可以写出new.Student().var,然后回车就可以自动带出对象名字,对象名字是可以更改的,就像后边写出的,小明和小红,都是具体的人。
同一个类,可以产生出不同的对象,就像小明和小红,但是他们都具备共同的特性,就是名字和年龄,也叫做共同的属性。
5、我们来打印一下小明这个对象的名字和年龄。
package oop.Demo02;
public class Application {
public static void main(String[] args) {
Student xiaoming = new Student();
Student xiaohong = new Student();
System.out.println(xiaoming.name+"\n"+xiaoming.age);
}
}
我们执行一下代码,可以发现,输出的是null。
null
0
进程结束......
所以,我们可以知道,名字这个属性没有赋值,默认值就是空(null),年龄是int类型,没有赋值,默认值是0。
6、我们要给小明的名字和年龄进行赋值,但是切记,不要在类的属性后边赋值,否则创建的所有对象的名字都叫一个名字了!!
下面给大家带来错误示范!!!
package oop.Demo02;
//学生类
public class Student {
//属性,字段
String name="小明";//除非是某些字段要求就是默认值,否则在这里赋值所有创建的对象初始值都是一样的!
int age;
//方法
public void study()
{
System.out.println(this.name+"正在学习");//this代表,当前类
}
}
下面给大家带来正确示范!
package oop.Demo02;
public class Application {
public static void main(String[] args) {
Student xiaoming = new Student();
Student xiaohong = new Student();
xiaoming.name="小明";
xiaoming.age=10;
System.out.println(xiaoming.name+"\n"+xiaoming.age);
}
}
我们执行一下代码,可以发现,输出的是我们所赋的值。
小明
10
进程结束.....
我们刚刚只是给xiaoming赋值了,但是没有给xiaohong赋值,所以我们可以输出一下小红,看看是不是没有值。
package oop.Demo02;
public class Application {
public static void main(String[] args) {
Student xiaoming = new Student();
Student xiaohong = new Student();
xiaoming.name="小明";
xiaoming.age=10;
System.out.println(xiaoming.name+"\n"+xiaoming.age);
System.out.println(xiaohong.name+"\n"+xiaohong.age);
}
}
我们执行一下代码。
小明
10
null
0
进程结束.....
我们在给小红赋值一下
public class Application {
public static void main(String[] args) {
Student xiaoming = new Student();
Student xiaohong = new Student();
xiaoming.name="小明";
xiaoming.age=10;
xiaohong.name="小红";
xiaohong.age=10;
System.out.println(xiaoming.name+"\n"+xiaoming.age);
System.out.println(xiaohong.name+"\n"+xiaohong.age);
}
}
我们执行一下代码。
小明
10
小红
10
进程结束.....
所以我们可以发现,类就有点像一个模板,我们可以通过赋值,来创建不同的对象,如果把世界想象成一个程序的话,所有人都是一个模板,People类,每个人有每个人的身高,体重,年龄,国家,职业,性格,星座等。
面向对象编程的本质:以类的方式组织代码,以对象的组织数据。
7、我们刚刚在类中创建了一个方法,我们直接调用一下。
public void study()
{
System.out.println(this.name+"正在学习");//this代表,当前类
}
public class Application {
public static void main(String[] args) {
Student xiaoming = new Student();
Student xiaohong = new Student();
xiaoming.name="小明";
xiaoming.age=10;
xiaoming.study();
//System.out.println(xiaohong.name+"\n"+xiaohong.age);
}
}
我们执行一下代码。
小明正在学习
进程结束.....
学习编程的好处,就是可以对世界进行更改的建模,模块化,抽象化,但是不要做一个宅男宅女!要多去体验生活,工作不是生活的全部,赚钱也不是生活的全部,我们要尽可能的让生活变的丰富多彩,不断的提升自己的认知,眼界,一定要有自己喜欢的事情去做(本人就非常喜欢画画,美术方面的东西),人所热爱的便是生活!