面向对象(1)
面向过程:关注具体流程,一步一步解决问题
把大象装进冰箱
3步实现
1.开门();
2.把大象装进去();
3.关门();
面向对象:先设计 对现实中客观事物进行分类 创建类(在类中定义方法) 创建对象 让对象去做具体的事情
冰箱类{
开门方法();
关门方法();
装大象();
}
大象类{
}
类是对现实事物的抽象
类
类是对现实事物的抽象
先有对象 后有类
人 人类(概念)
张三 人(具体的一个人)
类的结构
成员变量:类中事物的属性
方法:事物的行为 可以做的事
构造方法:用来初始化对象的方法
代码块:
内部类:
对象
具体存在的客观事物,可以拿来使用的,万事万物皆为对象
new Car(); new 在内存中创建对象, Car()构造方法(默认有一个构造方法,方法名与类名相同)
Car bm/bc; 声明一个Car类型的变量
= 将创建的对象赋给左边的变量
总结:类是一个模型 对现实事物的抽象 是一个模板 对象是从这个模型创建出的 是一个具体实例 创建对象的过程又叫实例化对象
同一个类的每个对象有不同的成员变量的存储空间
同一个类每个成员变量可以共享该类的方法
成员变量
定义类的成员变量(属性):
定义在类中, 方法体之外
数据类型可以是java中支持的任意类型(引用类型,基本类型)
成员变量可以初始化 如果不初始化 java会默认使用其默认值
引用类型默认是null 整数-0 浮点-0.0 boolean-false char-' '
创建对象时,会从类中向对象中复制一份成员变量
在成员方法、构造方法、代码块中都可以使用成员变量
局部变量
定在方法、构造方法、代码块中
使用前必须赋值
数据类型可以是java中支持的任意类型
方法的参数也是局部变量
成员方法
定义在类中 没有被static修饰 通过对象进行调用
构造方法
作用:用来初始化新创建的对象
特征:构造方法名与类名相同 没有返回值 且不用void修饰
每个类中都至少有一个构造方法 也可以定义多个 每创建一个对象时至少调用一个构造方法,如果类中无构造方法 默认调用无参构造 一旦定义有参构造方法 默认的失效
无参构造方法
在无参构造方法中为新建的对象默认初始化赋值
public Car(){ System.out.println("Car类无参构造方法"); }
有参构造方法
定义有参构造方法 为新建对象赋初值
public Car(String n,float p,String c){ System.out.println("有3个参数的构造方法"); name = n; price = p; color = c; }
方法重载
在同一个类中 有多个方法名相同 但是参数不同的方法
参数:个数 类型 顺序
方法重载与返回值无关
public Car(String n,float p,String c){
System.out.println("有3个参数的构造方法");
name = n;
price = p;
color = c;
}
public Car(String n,String c,float p){
System.out.println("有3个参数的构造方法String n,String float");
}
public Car(String n,float p){
System.out.println("有2个参数的构造方法");
name = n;
price = p;
}
成员方法也可以重载
public void test(){}
public void test(int a){}
public void max(int a,int b){
System.out.println("int a,int b");
}
public void max(float a,float b){
System.out.println("int a,int b");
}
public void test(int a,float b){
System.out.println("int a,float b");
}
对程序有什么帮助?
使我们的功能更加丰富,同一个方法可以进行多个功能的实现