面对对象
/**
* 面向过程:C
* 当开发一个功能的时候,看中的是中间的过程,中间每一个步骤都需要亲力亲为
* 面向对象 java js
* 当开发一个功能的时候,不看重中间的过程和步骤,看中是谁能帮我去完成这件事情
*
*/
public static void main(String[] args) {
int[] arr={10,80,90,78,98};
//把数组按照指定格式输出 [10,80,90,78,98]
//面向过程
System.out.print("[");
for(int i=0;i<arr.length;i++){
if(i==arr.length-1){
System.out.print(arr[i]+"]");
}else{
System.out.print(arr[i]+",");
}
}
//面向对象
System.out.println(Arrays.toString(arr));
}
成员变量和局部变量的区别
- 定义的位置不同
- 成员变量定义在类内部,方法之外
- 局部变量定义在方法内部
- 作用域不同
- 成员变量作用在类的内部
- 局部变量作用在方法内部
- 默认值不同
- 成员变量有默认值
- 局部变量没有默认值
- 内存中的位置不同
- 成员变量保存在堆里面
- 局部变量保存在栈里面
- 成员变量修饰符有四种,private 缺省 protected public;局部变量没有修饰符,默认和方法的修饰符权限一样
小汽车例子
/**
*
* 汽车图纸就相当于一个类,他是抽象的,不具体的,只是一个对事物的描述
*
* 汽车图纸包含两部分:
* 属性:颜色、品牌、价格、长度、宽度
* 行为:行驶
*
* 对应到类里面也是有两部分构成:
* 成员变量(属性):直接定义在类下面的变量
* 成员方法(行为):去掉static就是成员方法
*
*/
//汽车图纸类
public class Car {
//成员变量
String color;//颜色
String brand;//品牌
double price;//价格
int length;//长度
int width;//宽度
//成员方法
public void run(){
System.out.println("一辆颜色为:"+color+",品牌为:"+brand+",价格为:"+price
+",长度为:"+length+",宽度为:"+width+"的小汽车在马路上呜呜呜的跑着!!");
}
}
/**
* 正常情况下一个类是真正使用的,就类似于汽车图纸,他是不能直接行驶,
* 如果我们想使用这个类,需要根据这个类去创建这个类的对象,就相当于根据
* 汽车图纸创造汽车。
* 怎么创建一个类的对象?
* 类名 对象=new 类名();
*
* 对象名.属性名
* 对象名.方法名
*
*/
public class TestCar {
public static void main(String[] args) {
//创造一辆小汽车
Car car=new Car();
//System.out.println(car.color);
//赋值
car.brand="五菱宏光";
car.color="白色";
car.length=10;
car.width=2;
car.price=1000000;
System.out.println(car.color);
//调用方法
car.run();
//第二辆
Car car1=new Car();
car1.brand="红旗";
car1.color="黑色";
car1.length=3;
car1.width=2;
car1.price=500000;
car1.run();
Car car2=car;
car2.run();
}
}
面对对象一大特征
面向对象第一大特征:
* 当我创建完对象以后,如果直接通过“对象名.属性名”的方式给属性赋值的,可能会出现一些不符合实际情况的问题,
* 所以我们不考虑使用“对象名.属性名”的方式给属性赋值,而是通过“对象名。方法名”的方式给属性赋值,
* 因为方法我可以写大量的业务逻辑对属性值进行限制
1.讲属性私有化
2.提供公共的get和set方法 get 获取属性值 set修改属性值
构造方法
当我们使用一个类的时候会用到一个特殊的方法,叫构造方法/构造器
构造方法就是专门创建对象的,new后面的这个方法就是构造方法
- 怎么创建构造方法
public 构造方法名(参数){
}- 构建方法名必须和所在类的名字一致
- 构建方法不能写返回值
- 构造方法的作用
- 无参构造方法作用就是创建对象
- 有参构造方法在创建对象的同时给属性赋值
- 构造方法是可以进行方法重载的
- 注意:如果一个类没有自定义构造方法,系统会默认提供一个无参的构造方法;如果自定义了构造方法,系统不会在提供无参构造方法,需要我们手动添加一个无参构造方法
this关键字
/* 当局部变量和成员变量重名时,方法会根据“就近原则”使用局部变量的值,
* 如果想区分我们可以使用this关键字
*
* 格式:
* this.成员变量名
*
* this:
* 1.this可以修饰成员变量、成员方法、构造方法
* 2.this可以理解为当前正在使用或者正在创建的对象,通过那个对象调用的方法谁就是this
* 3.可以在构造方法中通过"this(形参)"的方式调用本类中其他构造方法
* 注意:在构造方法内部必须写在首行
*/