面向对象需要知道的名称:
面向对象定义
面向对象英文名称 | 中文名 |
---|---|
OO:Objective Oriented | 面向对象 |
OOA:Objective Oriented Analysis | 面向对象分析 |
OOD:Objective Oriented Design | 面向对象设计 |
OOP:Objective Oriented Programming | 面向对象编程 |
-
先有对象,在用对象找类
-
对象:软件中真实存在的单个个体/东西
-
类:类型/类别,代表一类个体
-
类是对象的模板/模子,对象是类的具体的实例
-
类中可以包含:
对象的属性/特征---------------------成员变量
对象的行为/动作---------------------方法
类方法的声明
修饰词 返回类型 方法名(参数){
方法体
}
类方法的重载(overload)
-
== 在同一类中,定义相同的方法名,参数列表不同!!==
-
因为重载所以我们才可以调用方法和不同的参数
-
签名方法自动绑定(方法名加参数列表)
-
例如:
我们写个类叫Student
//四个都是相同的方法名(show),但是不同的参数
class Student{
void show(){ }
//int show(){ }报错
//如果上面例子中多加一行返回值类型是int而不是void,会报错,重载与返回值类型无关
void show(String name){ }
//如果多加一行void show(String address)也会报错,重载和参数名无关
void show(int age,String name){ }
void show(String name,int age){ }
}
注意:
重载与返回值类型无关
重载和参数名无关
最典型的就是println,大家可以按住键盘上的Ctrl再加上鼠标左击println,就可以看到相同的println和不同的参数
例子
因为博主喜欢科比,我们就拿科比举个例子
- 科比属于球员,所以我们新建一个球员类
- 球员类里面都有什么共性,年龄,名字,身高等等
- 球员都有的行为:在打球
代码可以写成:
public class Player {
int age;//这个叫成员变量
String name;
int height;
double weight;
void gaming(){
System.out.println("大家好我是曼巴,我热爱篮球");
}
void gaming(String address){}
}
调用
public static void main(String[] args) {
//Player是数据类型,Kobe是引用类型变量
//new PLayer()是对象
//整个是创建一个对象,给成员对象赋默认值
//如果没有在类里面定义,一般为空
Player Kobe = new Player();
Kobe.name="科比";
Kobe.age=41;
Kobe.height=180;
Kobe.gaming();
}
构造方法
另外一种方法可以赋初始值,
- 构造方法:构造函数、构造器、构建器----复用给成员变量赋初值代码
- 作用:给成员变量赋初始值
- 构造方法与类同名,没有返回值类型(连void都没有)
- 调用:在创建(new)对象时被自动调用
- 若自己不写构造方法,则编译器默认提供一个无参构造方法,、
- 若自己写了构造方法,则不再默认提供
- 可以重载
public class Player {
int age;//不写的话默认是0
String name;//不写默认是null
int height;
double weight;//不写的话默认是0.0
void gaming(){
System.out.println("大家好我是曼巴,我热爱篮球");
}
void gaming(String address){}
//构造方法
Player (String name1,int age1,int height1){//这些参数叫局部变量,只能在这个方法中使用
name=name1;
age=age1;
height=height1;
}
Player (double weight1){//重载
weight=weight1;
}
Player (){//重载
}
}
在main里面调用
public static void main(String[] args) {
Player Kobe = new Player("科比",41,180);
Player ONeal = new Player(300);
Player Durant = new Player();
Kobe.gaming();
}
this(只能在方法)
this:指代当前对象,哪个对象调用方法它指的就是哪个对象的方法,
比如说实例一个对象zs
然后zs.study(); study()中的this指的是zs,谁调就是谁
只能用在方法中,方法中访问成员变量之前默认有个this.
规定:
成员变量和局部变量是可以同名的
访问的时候默认采取的是就近原则(成员变量=局部变量(从方法参数里面就近选择))
若想访问成员变量则this不能省略
小结:
当成员变量与局部变量同名时,若想访问成员变量this不能省略
当不同名时,一般情况下this都省略
this还可以调构造方法
class Student {
String name; //成员变量(整个类中)
int age;
String address;
//局部变量(当前方法中)
Student(String name,int age,String address){
this.name = name;//name是局部变量,this.name是当前对象调用name
this.age = age;
this.address = address;
}
Student(){//调构造方法,一般不用
this("詹姆斯",37,"美国地址");
}
void study(){
System.out.println(this.name+"在学习...");
}
}
局部变量和成员变量可以同名
例子:(上面的player方法可以写为:)
Player (String name,int age,int height){
this.name=name;
this.age=age;
this.height=height;
}