java编写教师类输出_Java类和对象的区别和联系,超简单易懂!

在面向对象的编程语言中,类和对象必然是最核心的特性之一。本文主要介绍Java中的类和对象。

示例

以班级成员为例,班上有小红、小明、小李,还有王老师、张老师和魏老师,我们认为他们都属于“人类”的范畴。他们都有人类的基本属性和行为。

细一步看,小红小明还有小李,他们都是学生,因此我们说,他们都属于学生,我们可以说这几位同学都属于学生类,他们都有学生类的基本属性和行为。

王老师、张老师和魏老师呢?他们都属于教师类,都拥有教师类的基本属性和行为。

而我们通过代号指定的班级成员(如小红或王老师),他们是一个具体的,而不是抽象的目标,我们视他们为一个个的对象。

因此,我们可以得到这样的一张图:

ff631aaaebf605519a2360281b99ccbb.png

看到这里,相信大家已经对类和对象有了自己初步的概念。我是这样看待类和对象的:类是对象的抽象,对象是类的示例。

类(Class)

Java中的关键字Class就是我们所称的类。我认为这个翻译真的太妙了!我们来看看汉字中“类”字的定义(取自百度汉语):

1.许多相似或相同事物的综合:种~。分~。同~。

2.用于性质或特征相同或相似的事物:分成几~。两~性质的问题。

3.类似:~人猿。~新星。画虎不成反~狗。

4.姓。

以学生类为例,我们将所有学生都有的属性和行为(方法)抽象出来,我们假设所有的学生都有

三个属性:学号、姓名、年龄。

三个行为:唱、跳、Rap (现在的学生还真是多才多艺啊…)

于是,可以得到一个学生类:

public class Student {

/********* 以下为Student的属性 **********/

int stuId; //学号

String name; //姓名

int age; //年龄

/********* 以下为Student的行为 **********/

//唱

public void sing(){

System.out.println(stuId + "号同学唱了一首歌!");

}

//跳

public void dance(){

System.out.println(name + "同学跳了一支舞!");

}

//Rap

public void rap(){

System.out.println("这位同学秀了一段Rap!");

}

}

至此,我们设计了一个简单的类,很简单吧!

Java中,类的设计其实是在给对象的创建作铺垫,正如《Java核心技术 卷Ⅰ 》中定义的:

类是构造对象的模板或蓝图

对象(Object)

如果是初次了解可能会觉得有些困难,加把劲!相信自己!

在示例的学生类中,就存在着三个对象:小红、小李、小明。他们都拥有学生类所有的属性和行为。可以说:有类才有对象,对象是基于类产生的。

1.对象创建(实例化)

在程序设计中,如果想要使用对象,就需要对它进行创建:

new Student();

此处的new操作符,代表创建对象的任务,那么要创建什么类型的对象呢?需要在new后边表示出来,此处选择我们之前设计好的Student类。

至此,程序创建了一个Student类的对象。其中,Student()是一个构造方法(将在下文介绍,此处仅了解)

2.声明变量

下一步,为了更好的区分创建的对象,我们会给对象取一个名字。在Java中,使用变量来给对象命名,同时需要告诉编译器这个对象的类型(如同int a一般)

Student stu1;

至此,程序声明了一个Student类型的变量stu1。这个变量有时也被称为对象变量。

有关对象和对象变量的相关知识,本文不详细讲述,有兴趣的可以看下我的文章:对象和对象变量

3.变量赋值

再用我们创建好的对象,给相应变量赋值

Student stu1 = new Student();

之后,对变量stu1进行操作的操作,即是对该对象进行的操作。这个变量stu1即成为了这个对象的引用变量,stu1可以视为对象的名称。

至此,我们完成了对象创建的工作(有的地方也称为对象的实例化或实例化对象),接下来开始尝试进行对象的相关使用操作。

4.对象操作

在Java中,我们使用“[ 对象名 ] + [ . ] + [ 属性名 ]” 或 “[ 对象名 ] + [ . ] + [ 方法名 ]” 的方式来操作。

我们已经知道,我们设计出的学生类都会一手Rap的绝活,现在我们想让stu1来一段精彩Rap秀,于是可以这样做

stu1.Rap();//输出结果:这位同学秀了一段Rap!

那么,如果我们想看一下这个stu1的年龄呢,很自然的,我们会想要这样做:

System.out.println(stu1.age);

会得到什么结果呢?

0

0?这显然是不正确的,回响一下,我们在创建对象的时候,并没有说明这个对象的属性(学号、姓名、年龄)。所以程序并不知道这个对象的属性值,它们都会被设置为默认的初始值。Java中提供了创建对象并给对象赋值的特殊方法:构造方法(也称为构造器)

构造方法

Java类中存在这样的方法,它的名字与类名相同,在创建对象时使用。它可在创建对象时定义对象的初始状态,用于构造一个对象。它被称为构造方法(或构造器)。同时可分为无参构造器(如:Student())和有参构造器(如:Student(String a,int b))。

在上文中,我们使用了 “new Student()” 这样的操作,new代表创建对象的任务,而由谁去执行呢?由后边的构造器执行,也就是说:创建对象的其实是由构造器来构造对象。

1.无参构造器:不包含参数的构造器

在Student类中,我们并没有书写出一个Student()构造器,但依旧可以使用这个构造器,这是因为:

在编写一个类时未编写构造器时,系统将会提供一个默认的无参构造器

在默认的无参构造器中,系统将会给对象的属性设置默认的初始值,此处int stuId = 0; String name = null; int age = 0;

因此,当我们打印stu1.age的时候,输出结果为0。

2.有参构造器:有参数的构造器

在无参构造器中,并不能够在创建对象时实现对其赋值。实际上,我们通常都会在设计类时,书写一个有参构造器。如在Student类中,就可以包含这段代码:

public Student(int a, String b, int c) {

stuId = a;

name = b;

age = c;

}

现在,假设要创建一个:学号为101,姓名为小李,年龄为13的对象,可以采取这样的方式:

Student stu1 = new Student(101, "小李", 13);

此时,构造器在创建对象时,将按照我们输入的数据,自动进行对象的初始化赋值操作:

stuId = 001;

name = "小李";

age = 13;

至此,一个学号为101,姓名为小李,年龄为13的同学便创建好了。我们输出测试一下:

System.out.println("我们创建了一个:" + stu1.age + "岁的" + stu1.name + "同学,他的学号为:" + stu1.stuId + "。");

输出结果为:

我们创建了一个:13岁的小李同学,他的学号为:101。

实际上,当我们书写构造器时,系统将会自动在构造器的第一行填上 super(); 语句,代表调用父类的默认无参构造器。这里先只做了解,相关细节我会在后文中介绍。

总结一下:

1.构造器与类同名

2.构造器在new创建对象时使用

3.构造器没有返回值

4.构造器可以有0个或多个参数

5.每个类可以有一个或多个构造器

6.当未指名构造器时,系统将自动提供一个无参构造器

至此,我们已经完成了简单的类的设计和对象的创建,同时还尝试了对象方法的使用。

下面贴出相关代码:

Student.java

public class Student {

/********* 以下为Student的属性 **********/

int stuId; //学号

String name; //姓名

int age; //年龄

public Student(){

}

public Student(int a, String b, int c) {

stuId = a;

name = b;

age = c;

}

/********* 以下为Student的行为 **********/

//唱

public void sing(){

System.out.println(stuId + "号同学唱了一首歌!");

}

//跳

public void dance(){

System.out.println(name + "同学跳了一支舞!");

}

//Rap

public void rap(){

System.out.println("这位同学秀了一段Rap!");

}

}

Test.java

public class Test {

public static void main(String[] args) {

//创建对象

Student stu1 = new Student(101, "小李", 13);

Student stu2 = new Student(102, "小红", 12);

Student stu3 = new Student();

//对象引用

System.out.println("我们创建了一个:" + stu1.age + "岁的" + stu1.name + "同学。他的学号为:" + stu1.stuId + "。");

stu2.dance();

stu3.rap();

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值