初识Java,可以说最先了解到的是Java是一门完全面向对象的编程语言,当然,看到这句话也是一脸懵逼,不是很理解,但是莫慌,只需要接触刚开始两个小代码就能够深刻体会奥秘。
1, 现实生活的对象与类
首先我们先要知道什么叫做对象,桌子,电脑,书?那就大错特错了,这样回答是将对象和类混淆,桌子,可以是方桌,圆桌,再细致一点,可以是这个方桌,那个圆桌,那么你指代是哪个呢,所以我们必须加上定语,比如我新买的鼠标,我穿着的T恤,
那么对象肯定有他的特性,比如说一个电脑,他有他的特征,他有他的功能,他的形状,颜色,品牌,所有者,显卡,CPU,他的功能,打字,显示,播放,运行,开机,,再比如说一个人,他的特征是身高,体重,性别,肤色,他的行为是走路,吃饭,睡觉等等等等……
那么生活中的类又是怎样定义的呢,可以说,只要是具有相似特征和行为的对象就可以集合成为一类,比如说桌子上绿色的水杯,蓝色的水杯,紫色的水杯,可以统一成水杯类,生活中的类当然是抽象的。
2, Java中的类和对象
那么在一个Java程序中,我们还是按照这个原则,来写代码,程序中的类由两个部分组成,1:属性2:方法,就是说,所有在这个类的或者是继承这个类的对象,都会具有我们在类中定义的属性和方法,属性是根据对象的特征进行定义的,方法是根据对象的功能(行为/用途)进行定义的。比如我们写一个两个英雄pk的程序,直到一方死亡,那么对象就是两个英雄,每个对象自成一类,因为我们要对他们分别注入属性,然后最后一个主程序控制比赛进行,
3, 类的基本格式以及实例化方法
public class 类名 {
//定义属性
public 数据类型 属性名;
//定义方法
public 返回值类型 方法名(数据类型 参数名,...){
}
}
注意:类是基本单位也是模板,所以你不能使用类名来调用属性和方法,如果要使用必须要实例化对象,然后通过对象名来调用属性和方法。
我们光定义了类还不行,我们还要把类的属性方法实例化,也就是说要让类富有灵性,
我们引进一个关键字:new。
格式如下:
类名 对象名 = new 类名();
调用对象的属性和方法格式:
对象名.属性名
对象名.方法名(参数值,,,);
注意:Java中类名、属性名、方法名、参数名、对象名、常量名的命令规则是:第一字只能是下划线和字母,之后的字可以是下划线、字母和数字。
4, 实战
场景:张三在学习Java课程中,学完该课程后,张三的学分要增加3分。
1.找出场景中的对象以及对象的特征和行为(功能/用途):
张三
特征:学分、姓名
行为:学习(java课程)
Java课程
特征:学分、名字、课时
2.根据对象的特征以及行为,按照类的固定格式进行类的抽象定义:
有2个对象,那么需要定义2个类
张三抽象定义Student学生类
Java课程抽象定义为Subject课程类
3.实例化Student和Subject课程类的对象,然后用对象名去调用属性和方法的格式:
Manager类的主函数中实例化对象调用属性和方法。
下面给出代码:
① ://定义Student学生类
public class Student {
public String name;//姓名属性
public int score;//学分属性
//定义学习课程的方法
public void study(Subject sub){
//减少课程的课时
sub.time--;
System.out.println(name+"正在学习"+sub.name+"课程,剩余的课时是"+sub.time);//输出信息的输出函数
if(sub.time<=0) {
score += sub.score;//让学生的学分加上课程的学分。
System.out.println(name+"已经学完了"+sub.name+"课程,"+name+"现在的学分是:"+score);
}
}
② //定义Subject课程类
public class Subject {
public int score;//学分属性
public String name;//名字属性
public int time;//课时属性
}
③//定义Manager类
public class Manager {
//定义程序的入口主函数
public static void main(String [] args){
//实例化Student学生类的对象
Student stu = new Student();
//设置对象的属性值
stu.name = "张三";
stu.score = 10;
//实例化Subject课程类的对象
Subject sub = new Subject();
//设置对象的属性值
sub.time = 10;
sub.score = 3;
sub.name = "Java";
while(sub.time>0){
//让学生学习课程
stu.study(sub);
}
}
}
哈哈,捋清思路,说白了就是,在类中定义方法,实例化对象,然后将对象带入主函数,完成相应的目的,就是这么easy
想一想最近非常流行的王者荣耀,两个英雄在打斗的时候,也可以理解为,先定义人物类,然后在实例化对象中,对他们分别注入各自的攻击,技能,防御属性,然后最后一个manager函数调用两个对象在实战中的过程,就ok了。
此上内容纯属个人见解,如有雷同纯属巧合,萌新一枚,多多关注哦,么么哒