java 什么是面向对象

类与对象 什么是面向对象,下面我们通过一个引子来介绍一下面向对象。 造车:画图纸 定义车的属性: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();

注意:
  同一个类,无论创建多少个对象,每个对象都有自己的成员变量,但是所有对象共享一份成员方法

成员变量和局部变量区别

什么是成员变量和局部变量

成员变量:

  直接定义在类中且方法外的变量,称为成员变量

局部变量:

  定义在类中的方法中的变量,称为局部变量

成员变量和局部变量的五大区别(记住前三个)

  1. 定义的位置不同
    •  成员变量:类中方法外
    •  局部变量:类中方法中
  2. 默认值不同
    •  成员变量:有默认值,默认值根据数据类型而定
    •  局部变量:没有默认值,如果想要使用必须先赋值
  3. 作用域不一样
    •   成员变量:在整个类中均可以使用
    •   局部变量:只在该局部变量所定义的方法内有效 
  4. 在内存的位置不一样
    •  成员变量:跟随对象保存到堆中的
    •  局部变量:跟随方法的调用保存到栈中的
  5. 生命周期不一样
    •  成员变量:跟随对象创建的出现,跟随对象的销毁而销毁
    •  局部变量:跟随方法的执行而出现,跟随方法执行完毕而销毁