什么是类与对象?
我们知道,自然界中的生物有界门纲目科属种的分类,而具有相同或相似特征和作用的非生物,往往也被归为同一类。
比如,猴子和熊猫同属于哺乳动物,它们有相似的繁衍方式;而玻璃杯、瓷杯、保温杯同属于杯子,它们都能盛放液体。
这其实就是最原始的类的概念,它指的是具有相同特征和功能的物品的集合。而计算机领域中的类也是如此,不过此时,特征被称作类的属性,功能或行为被称作类的方法。类中的物品也就是类的对象。
类是对象的抽象模板,对象是类的具体实例。
Java中的类
面向对象和面向过程
Java是一门面向对象的语言,C++也是面向对象,而C语言是面向过程的。
面向过程,其实更像我们平时的思维方式,将一个问题分解成多个过程依次完成。它是以步骤来划分问题。
而面向对象,则是分析问题所涉及到的主体,建立多个对象,通过编写对象所在类的方法来描述这个对象在问题中的作用。它是以功能来划分问题。
Java中类的语法
public class 类名{
//属性定义
public 属性类型 属性名;
//方法定义
public 方法返回值类型 方法名(参数类型 参数名,...){
//方法体
}
}
其中,方法类似于C语言或C++中的函数。
值得注意的是,在调用一个方法时,我们只关心其参数列表中参数的类型,而不关心参数名。
Java中的对象
对象
我们要实现功能,依赖的不是抽象的类,而是具体的对象,通过调用具体某个对象的方法,来满足问题的需求。
Java中类的语法
//创建对象
类名 对象名 = new 类名();
//对象的属性使用
对象名.属性名
//对象的方法调用
对象名.方法名(参数,...)
主方法
在完成类的属性和方法之后,我们可以编写一个主方法,在主方法内进行创建对象,调用方法等步骤的编写。格式为:
public static void main(String[] args){
//主方法体
}
示例
类的编写
我们尝试编写一个学生类.
1、先考虑其属性:姓名、性别、学号、学时,也考虑应该拥有哪些方法,比如说学习、比如说玩游戏,也可以增加一个显示学生基本信息的方法。
public class Student{
//属性:姓名、性别、学号、学时
//方法:学习、玩游戏
}
2、我们也要考虑每个属性的类型
public String name;
public char sex;
public String sno;
public int hours;
3、考虑每种方法的返回值类型,以及需要哪些参数
//学习
public void study(){
hours++;
System.out.println(name+"正在学习,学时增加,当前学时为"+hours);
}
//玩游戏
public void play(){
hours--;
System.out.println(name+"正在学习,学时扣减,当前学时为"+hours);
}
//显示信息
public void show(){
System.out.println("姓名:"name+"\n性别:"+sex+"\n学号:"+sno+"\n当前有效学时:"+hours);
}
4、至此,我们得到了一个完整的类
public class Student{
//属性:姓名、性别、学号、学时
public String name;
public char sex;
public String sno;
public int hours;
//方法:学习、玩游戏
//学习
public void study(){
hours++;
System.out.println(name+"正在学习,学时增加,当前学时为"+hours);
}
//玩游戏
public void play(){
hours--;
System.out.println(name+"正在学习,学时扣减,当前学时为"+hours);
}
//显示信息
public void show(){
System.out.println("姓名:"name+"\n性别:"+sex+"\n学号:"+sno+"\n当前有效学时:"+hours);
}
}
对象的创建
我们打算在方法内创建对象,并调用其属性与方法,观察结果
public static void main(String[] args){
//创建学生对象stu
student stu = new student();
//对学生对象stu进行赋值
stu.name = "路人甲";
stu.sex = 'M';
stu.sno = "20160101";
stu.hours = 10;
//调用方法show()查看学生基本信息
stu.show();
//让学生学习三次
for(int i=0;i<3;i++){
stu.study();
}
//玩游戏一次
stu.play();
}
最后将主方法加入类中就可以啦~