面向对象的总体介绍(后期课程所学)
概述
- 之前所学习的代码都是面向过程,针对问题解决问题,主要的思维方式是按照特定的步骤来执行代码
- 实际工作中所实现的代码,都是一些复杂的系统,这时候面向过程就不够用了,就需要用到面向对象
-
几种术语
对象(object):具体的一个物体,例如:张三这个学生、五点钟时间(名词)特指
- 属性(field):对象所具有的特征
类(class):对某一类物体的统一描述或者称呼,所描述的是“共性”,例如:学生、时间(张三和李四)统称
对象在代码中的描述
idea创建过程
IDEA新建项目—>新建包package(src目录下:com)—>在包下面建包(根据功能的不同命名:com.object001)
—>包中建类class(命名按实际对象命名)创建一个具有共性的类(Student学生)
如图所示:张三就是对象=name:图片中 改为 String name;
- 再通过类class创建具有个性的对象(创建需要用new创建
,给对象的属性赋值用点属性
s1.name .属性
hero nana = new hero();//nana是对象名,hero是所调用的类名
类的基本组成
- 类名必须要和创建的文件名保持一致;后缀名.java
- 第一个字符必须是大写英文字母
- 使用驼峰命名法进行定义
```java public class Hero{
}
2. 类的属性(成员变量):是组成类的一部分,例如:英雄、血量等等
1. 成员变量(与局部变量)
1. 成员变量是在类中声明
1. 局部变量是在方法中声明(包括形参)
1. 当局部变量与成员变量同名的时候,可以使用this.调用

2. 可以定义多个不同类型的属性:整数类型、分数类型、布尔类型、字符类型
2. 可以是值类型:String[] skins;
2. 也可以是引用类型:String
3. 方法:代表类的行为,例如:放大招、移动等等
1. 一般需要static修饰
1. 方法体必须被实现
1. 不同的对象可共用一个方法
```java
//放大招
public void bigAttack(){
System.out.prinrIn(name+"放的大招");
}
- 两种不同的方法
- 一种是一般的方法
- 构造方法:是通过类创造对象的时候自动调用的方法,一般用于初始化每个对象的变量 ```java public hero(String name,int blood,String[] skins){//hero是类名,通过类创造的对象
}
1. 主要是用于给属性赋值的方法
1. 构造方法赋值的时候,最好使用this获取当前对象的属性(this所代表的不是类,是对象)
1. 每个类都有一个默认的构造方法,当程序员自定义构造方法之后,默认的构造方法失效,需要自行定义
```java
//程序的方法入口
public static void main(String[] args){
//使用自定义方法后默认方法失效,需要自行定义,此处为定义代码,创建新对象h1,给对象h1赋值
Hero h1 = new Hero(黄忠,150,new String[]{"老将","炮手"});
h1.bigAttack();
}
面对对象的一些规则概念
重载
- 在一个类中是否可以定义两个相同名称的方法?
答案:可以,但是方法的参数必须不同,
定义概念:将一个类中方法名称一样,方法参数不一样的两个方法称之为重载(Overload)
public class Student{
String name;
public void say(){//此处参数为空,在系统内部此方法名为say
//两处参数不一样,但是类中方法名称一样
}
public void ssay(String name){//此处参数为name,在系统内部此方法名为say_name
//所以说在系统内部他们名称还是不一样的,故没有报错
}
}
构造方法也支持重载
public class Student {
String name;
//默认的构造方法
public Student(){
//两处参数不一样,但是类中方法名称一样
}
public Student(String name){
this.name = name;
}
}
构造方法
- 构造方法(constructor):对象被创建的时候,构造方法会默认调用
- 如果一个类不写构造方法,那么这个类就默认存在一个无参构造方法
- 一旦自定义构造方法,那么默认的无参构造方法就会失效,如果在new的时候调用了无参的构造方法就会报错,提示最好自己补上无参的构造方法
this的用法
- this是对象的内置引用,指向自己,作用:主要用于防止语法的歧义
- 用法主要是两个