本人Java刚入门,目前菜鸟级别,在此尝试一下众多技术大牛所推崇的优良习惯------也来写写技术博客,希望CSDN博客能见证我的成长和进步。以下是本人的第一篇技术博客。
我就从OOP中最基本的类和对象说起好了。类是对象的抽象,对象是类的具体表现。让我们从具体到抽象,这样更容易理解。
1.现实生活中有哪些是对象?
我们先不说对象的定义,先自己思考一下就字面意思来看,生活中的对象有什么。我接到这个问题时,立马想到的是映入眼帘的东西:笔,电脑,书......
但这些真的是指具体的某个对象吗?到底是哪支笔,哪台电脑,哪本书?我又加上了指示代词和物主代词:这支笔,他的电脑......这样对象的定义就逐渐清晰了。
对象:在现实生活中只要是一个具体的物体或者一个具体事物就是一个对象。
举例:某一台电脑、某一支笔、某一本书......
从哪些方面去描述一个对象?------通过其特征和功能进行描述
某一台电脑
特征:型号,重量,品牌,价格,颜色,性能,CPU,硬盘......
功能:开机、关机、上网、编辑文件......
2.类的组成和格式
生活中是根据什么对对象进行分类的呢?------根据对象的特征和行为(功能)进行划分的。
程序中的类是怎样的呢?
程序中类是根据生活中对象(类)的特征以及行为(功能),按照程序中类的固定进行的抽象定义。
程序中类由两个部分组成:1.属性 2.方法
属性是由对象的特征进行定义的;
方法分为两类:1.构造方法 2.普通方法(构造方法这里暂且不说,后文有详细说明)
普通方法是由对象的行为(功能)定义的。
类的格式
public class 类名 { //注意:Java的类名最好第一个字母大写
//属性的格式
访问修饰符 数据类型 属性名;
//普通方法的格式
访问修饰符 返回值类型 方法名(数据类型 参数名,...){
//代码
}
//构造方法的格式 注意:构造方法名必须要和类名一致。
访问修饰符 构造方法名(数据类型 参数名,...){
//代码
}
}
注意:Java的类中可以使用的访问修饰符有四种:private、默认的、protected、public
举例:
public class Outman { //定义一个公有的奥特曼类
public String name; //定义一个公有的字符串类型的姓名属性
public int blood; //定义一个公有的整型的血量属性
public void Attack(Monster mon){ //定义一个攻击方法
//具体功能的代码
}
}
3.构造方法(构造器、构造函数)
Java默认会给类提供一个无参数的构造方法,我们在创建对象的时候new的后面调用的就是构造方法。
1.构造方法的用途
1.实例化对象
2.传递参数
2.构造方法和普通方法的区别是什么?
1.格式4个不同:a.构造方法名必须和类名一致;b.构造方法不必声明返回值类型;c.构造方法一定有返回值,返回值的类型就是方法名,因为构造方法名就是一个类的名字,是一个数据类型;d.构造方法在调用的时候是通过new关键字来调用。
2.用途和用法2个不同:构造方法是用来实例化对象和初始化属性的;普通方法是对对象的行为定义的,调用普通方法时表示执行的对象的行为。
举例:
public class Outman{
public Student(){ //无参构造器方法
}
}
Outman o=new Outman(); //调用构造方法
4.this关键字
1.当你的参数名和属性名相同时,可以使用this关键字来做区分,加上this的表示属性名,没有加的则表示参数名。
2.用来调用构造方法(防止没有给属性赋值)
this表示谁呢?
当前是哪一个对象名在调用方法,那么方法中的this就表示这个对象。
this和生活中的“我”一样。
举例:
public class Monster{ //定义一个公有的怪兽类
public String name; //定义一个公有的字符串类型的姓名属性
public int blood; //定义一个公有的整型的血量属性
public Monster(String name,int blood){ //定义一个构造方法(含有两个参数)
this.name=name; //this关键字区分,左边的表示name 属性,右边的表示name参数
this.blood=blood; //this关键字区分,左边的表示blood 属性,右边的表示blood参数
} }
5.方法重载
1.现实生活中什么情况下需要使用方法重载?
普通方法:学生:学习课程、学习开车......
构造方法:人出生时有不同的特征,有的人出生时有胎记,有的人没有
2.方法重载的实现条件:
a.方法名必须要相同
b.方法的参数不同(个数、类型、顺序)
举例:我们可以在一个类中重载多个构造方法:
public class Monster{
public String name;
public int blood;
public Monster(){ //定义一个无参的构造函数
this("Monster",1000); //通过this关键字给属性赋值
} public Monster(String name){ //方法重载 this.name=name; }
public Monster(String name,int blood){ //方法重载
this.name=name;
this.blood=blood;
} }
6.实例化对象和调用方法的格式
实例化对象的关键字:new
格式:
类名 对象名 = new 类名();
类名 对象名 = new 构造方法名(参数值,...); //两种等同
调用方法和属性的格式:
对象名.属性名
对象名.方法名(参数值,...);
举例:
Outman o=new Outman();
o.name=Leo;
o.blood=2000;
实践:回合制对战游戏:奥特曼和小怪兽进行PK,直到一方血量为0时结束战斗,输出谁胜利了!
如果奥特曼胜利,则奥特曼要攻击Boss,直到一方血量为0时结束战斗,输出谁胜利了!