学习-Java类和对象之类的声明之学⽣类的定义
第1关:学习-Java类和对象之类的声明之学⽣类的定义
任务描述
本关任务:定义⼀个 Student 学⽣公开类,该类具有学号 id(int),年龄 age(int),grade(int) 等属性;它们所具有的⾏为有学习study(),考试 examination(),讲话 tell(),它们都⽆返回值和传⼊的参数。
study ⽅法的功能为换⾏输出:学号为xx的学⽣正在学习。; examination ⽅法的功能为换⾏输出:xx年级正在考试。; tell ⽅法的功能为不换⾏输出:正在讲话的是⼀个xx岁的学⽣。。
相关知识
为了完成本关任务,你需要掌握:
类的基本概念;
类的声明;
类的成员变量、局部变量和类变量;
成员⽅法。
类
Java 是⼀门⾯向对象的编程语⾔,⽽⾯向对象最关键的两个词汇是类与对象。这⾥我们主要给⼤家讲解类的概念。
类: 类就是具备某些共同特征的实体的集合,它是⼀种抽象的数据类型(它属于引⽤数据类型),它是对所具有相同特征实体的抽象。
对象:是类的⼀个实例,有状态和⾏为。每个对象拥有⾃⼰独⽴的属性,依靠属性来区分不同对象。
在⾯向对象的程序设计语⾔中,类是对⼀类“事物”的属性与⾏为的抽象。属性是事物的状态,⾏为就是这个事物可以做什么。⽐如,⼈就是⼀个类,那么具体的某个⼈“⼩明”就是“⼈”这个类的对象,⽽“体重、性别、年龄”等信息就是对象的属性,⼈的⾏为⽐如“吃饭、睡觉和玩”等就是对象的⽅法。
注意:类只是⼀个抽象的概念,它仅仅是⼀个概念,是不存在的实体!
类的声明
在 Java 中定义类,使⽤关键字 class 完成。语法如下:
权限修饰符class类名称{
属性(成员变量);
⾏为(成员⽅法(函数));
}
权限修饰符可写可不写,我们之前见到的 public 就是权限修饰符的⼀种。在后⾯的学习任务中,我会为⼤家详细介绍。
例⼦:声明⼀个⼈类。
public class Person{
// 属性 (成员变量) ;
// ⾏为 (成员⽅法(函数)) ;
}
public 表⽰“共有”的意思。如果使⽤ public 修饰,则可以被其他类和程序访问。每个 Java 程序的主类都必须是 public 类。
创建⼀个新的类,就是创建⼀个新的数据类型。定义类其实就是在定义类中的成员(成员变量和成员函数)。
变量
在 Java 中类的成员变量定义了类的属性。例如,⼀个⼈类中⼀般有体重、性别和年龄等属性,这时就需要定义体重、性别和年龄 3 个属性。
那 Java 中的成员变量⼜是什么呢?
⾸先我们来看,Java 语⾔⽀持的变量类型有:
局部变量:在类的⽅法中定义的变量,且只能在该⽅法中使⽤,我们之前学习的变量都是局部变量;定义以后必须赋值才能使⽤;
成员变量:也称为实例变量,它的定义在⽅法的外部,直接写在类当中;随着对象创建⽽诞⽣,随着对象被垃圾回收⽽消失;如果是对某个对象的特殊描述,可以⽤该变量;定义时如果不赋值的话,会采⽤默认初始值;
静态变量:也称为类变量,实质上是⼀个全局变量。它的定义在⽅法的外部,直接写在类当中,与类共存亡,它⽤ static 修饰,如果某个内容是被所有对象所共享,那么该内容就应该⽤ static 修饰;定义时如果不赋值的话,会采⽤默认初始值。
例⼦:
public class Demo{
static int a;// 类变量
int b;// 实例变量
public static void main(String[] args){
int c;// 局部变量
}
}
我们再来看⼀下它们是如何被引⽤的:
局部变量可以直接在⽅法中赋值或引⽤,就像我们之前学习的⼀样;
成员变量必须得通过创建⼀个对象后引⽤;
类变量在这个类中可以直接拿来⽤,若是在另⼀个类中要⽤到该类的类变量,需要通过类名.变量名引⽤。
现在我们对成员变量已经有了⼀定的了解,接下来看个例⼦吧。
在 Person 类中定义该类的成员变量,也就是该类的属性。
public class Person{
// 属性 (成员变量) ;
double weight ;// 为该类定义⼀个表⽰体重的成员变量
char sex;// 为该类定义⼀个表⽰性别的成员变量
int age;// 为该类定义⼀个表⽰年龄的成员变量
}
成员⽅法
在 Java 中类的成员⽅法定义了类的⾏为。例如,⼀般⼈会有吃饭、睡觉和玩等⾏为,在定义⼈的类时,就需要定义吃饭、睡觉和玩 3 个⽅法。
类的各种功能操作都是⽤⽅法来实现的,属性只不过提供了相应的数据。⼀个完整的⽅法通常包括⽅法名称、⽅法主体、⽅法参数和⽅法返回值类型。
成员⽅法的声明语法:
[权限修饰符] 返回值类型 ⽅法名([参数类型 参数名]){
// ⽅法体
// 返回值
}
注意:[ ] 表⽰可写可不写。
返回值类型:我们之前学到的⼋种基本类型和 void 都可以⽤来做⽅法的返回值类型。要注意的是 void
表⽰没有返回值,所以不需要写返回值语句,⽽其他类型都需要返回⼀个该类型的值。
返回值语句:
return返回值;
参数类型 参数名:可以有多个,这些参数都要有⾃⼰的数据类型,可以是原始数据类型,也可以是复杂数据类型,⼀个⽅法主要依靠参数来传递消息。⽅法主体是⽅法中执⾏功能操作的语句。
例⼦:
public int a(){// 定义⼀个名为a,返回值类型为int的成员⽅法
// 返回值语句: return 返回值;
return0;// 由于返回值类型为 int,所以需要返回⼀个int型的常量或变量
}
public void c(){// 定义⼀个成员⽅法,它的名为c,返回值类型为void,该⽅法不需要返回值。
}
以上是没有携带参数的,那携带参数的⼜是怎么回事呢?
例⼦:
public double b(int a,double b){// 定义⼀个名为c,返回值类型为double的成员⽅法,其携带的参数有两个,⼀个为int型的变量a,⼀个double型的变量b
double c = a*b;
return c;// 由于返回值类型为 int,所以需要返回⼀个int型的常量或变量
}
成员⽅法的调⽤必须通过实例⼀个对象来调⽤。
同样⽅法也可以被 static 修饰,变为静态⽅法,只不过变为静态⽅法以后,就不能调⽤实例变量,⽽成员⽅法却可以调⽤静态变量。如果在该类中调⽤静态⽅法的话,我们可以直接调⽤,⽽如果不在同⼀个类中,需要通过类名.⽅法名()或者实例⼀个对象,通过该对象调⽤静态⽅法。
例⼦:在⼈的类中定义它的成员⽅法(⾏为)。
public class Person{
java类的概念// 属性 (成员变量) ;
double weight =100.00;// 为该类定义⼀个表⽰体重的成员变量
char sex ='男';// 为该类定义⼀个表⽰性别的成员变量
int age =18;// 为该类定义⼀个表⽰年龄的成员变量
// 定义⼀个名为a,返回值类型为int的成员⽅法
public void eat(){// 该成员⽅法表⽰吃饭这个⾏为
System.out.printf("我喜欢吃饭,所以我的体重⾼达%f千克\n",weight);
}
// 定义⼀个名为a,返回值类型为int的成员⽅法
public void sleep(){// 该成员⽅法表⽰睡觉这个⾏为
System.out.println("我正在睡觉!");
}
public void play(){// 该成员⽅法表⽰玩这个⾏为
System.out.printf("我的性别为%c,今年%d岁,我喜欢玩耍",sex,age);
}
}
编程要求
仔细阅读右侧编辑区内给出的代码框架及注释,按照提⽰编写程序代码。
测试说明
平台将使⽤测试集运⾏你编写的程序代码,若全部的运⾏结果正确,则通关。 可在右侧“测试结果”区查看具体的测试集详情。开始你的任务吧,祝你成功!
/**
* 任务:定义⼀个 Student 学⽣公开类,该类具有学号 id(int),年龄 age(int),grade(int) 等属性;
* 它们所具有的⾏为有学习 study(),考试 examination(),讲话 tell(),它们都⽆返回值和传⼊的参数。
* 类名为:Student
*/
// 请在下⾯的Begin-End之间按照注释中给出的提⽰编写正确的代码
/********** Begin **********/
// 第⼀步:创建⼀个名为 Student 的公开类
public class Student{
// 第⼆步:定义学⽣的属性
int id=20110624;
int age=18;
int grade=12;
// 第三步:定义学⽣的⾏为⽅法
public void study(){
System.out.println("学号为" + id +"的学⽣正在学习。");
}
public void examination(){
System.out.println(grade + "年级正在考试。");
}
public void tell(){
System.out.println("正在讲话的是⼀个"+ age +"岁的学⽣。");
}
}
/********** End **********/
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论