类与对象
什么是面向对象,下面我们通过一个引子来介绍一下面向对象。
造车:画图纸 定义车的属性:color,speed,seat
定义车的动作:跑拿着图纸去工
类与对象
什么是面向对象,下面我们通过一个引子来介绍一下面向对象。
造车:
- 画图纸
- 定义车的属性:color,speed,seat
- 定义车的动作:跑
- 拿着图纸去工厂生产汽车
面向对象中:
- 类:就是图纸
- 属性:这一类事物拥有的共同属性
- 动作:这一类事物共同执行的功能
- 对象:使用类创建的具体的某一个东西
写代码:
- 类要用class 来定义
- 属性:成员变量来描述. 直接写在类中的变量
- 动作:成员方法. 不写static 就是成员方法
- 创建对象:
- 类 引用 = new 类();
public class Car { // 成员变量 String color; // 颜色 int speed; // 速度 int seat = 5; // 座位 // 成员方法 public void run(){ System.out.println("跑-------"); } public void fly(){ System.out.println("飞-------"); } public static void main(String[] args) { // int a = 10; // 写在方法里的变量,局部变量 /* 在面向对象的世界里,变量是没有市场的,这种变量被称为引用 java 分为两种数据类型: 1. 基本数据类型 2. 引用数据类型 String 和 我们创建的所有的类 */ // 创建对象,创建了一辆车,想用这辆车,需要用c来访问 Car c = new Car(); // 让车去跑,对象或者 引用.方法() c.run(); c.color = "绿色"; c.speed = 120; System.out.println(c.color); Car c2 = new Car(); c2.color = "红色"; c2.speed = 180; System.out.println(c.seat); System.out.println(c2.seat); System.out.println(c.color); System.out.println(c2.color); c.fly(); } }
成员变量是有默认值的,默认值与该成员变量具体的数据类型有关
基本类型:
- 整数(byte,short,int,long),默认值 0
- 浮点数(float,double),默认值 0.0
- 字符(char),默认值 '\u0000' 理解成空格
- 布尔(boolean),默认 false
引用类型:默认是 null
//创建对象 Student s = new Student(); //使用对象 System.out.println(s.name + "," + s.age); s.name = "张曼玉"; s.age = 28; System.out.println(s.name + "," + s.age); //调用 s.study(); s.play();
注意:
创建出来的对象保存到堆内容,对象中有类中定义的所有成员变量,和类中定义的所有成员方法的地址
//创建对象 Student s = new Student(); //使用对象 System.out.println(s.name + "," + s.age); s.name = "张曼玉"; s.age = 28; System.out.println(s.name + "," + s.age); //调用 s.study(); s.play();
注意:
同一个类,无论创建多少个对象,每个对象都有自己的成员变量,但是所有对象共享一份成员方法
成员变量:
直接定义在类中且方法外的变量,称为成员变量
局部变量:
定义在类中的方法中的变量,称为局部变量
- 定义的位置不同
- 成员变量:类中方法外
- 局部变量:类中方法中
- 默认值不同
- 成员变量:有默认值,默认值根据数据类型而定
- 局部变量:没有默认值,如果想要使用必须先赋值
- 作用域不一样
- 成员变量:在整个类中均可以使用
- 局部变量:只在该局部变量所定义的方法内有效
- 在内存的位置不一样
- 成员变量:跟随对象保存到堆中的
- 局部变量:跟随方法的调用保存到栈中的
- 生命周期不一样
- 成员变量:跟随对象创建的出现,跟随对象的销毁而销毁
- 局部变量:跟随方法的执行而出现,跟随方法执行完毕而销毁