三、Java面向对象简介

目录

1.面向过程与面向对象对比

2.类与对象

3.成员变量与局部变量


1.面向过程与面向对象对比

(1)面向过程:分析出解决问题所需要的步骤,然后用函数把这些步骤一一实现,使用时依次调用。

(2)面向对象:把问题根据一定的规则划分为多个独立对象,然后由多个对象相互配合来实现问题的求解。当应用模块功能发生变动时,只需修改个别对象,使代码更容易维护;并且每个对象之间联系性较小,相对独立,可以充分实现代码复用。java面向对象的三大特性:封装、继承、多态。

可以把面向过程理解为小农经济,所有生活用品基本都要亲力亲为;而面向对象中,只需要找到做这件事的人,然后让他做完并提交给你,而不需要你来了解其制作过程。

2.类与对象

java语言作为一门面向对象的语言,引入了类和对象的概念,类是创建对象的模板(模具、图纸),它包含被创建对象的状态描述和方法的定义。对象的创建需要通过类的实例化来完成(类的实体)。对象的属性通过变量来刻画,对象的行为通过方法来刻画。

(1)定义类

/**
 * 一个学生类(所有学生的模板)
 * 属性:学号、姓名、年龄、成绩
 * 行为:吃饭、学习、睡觉、考试
 */
public class Student {

    int stuNo;//学号
    String stuName;//姓名
    int stuAge;//年龄
    int stuGrade;//成绩

    //吃饭
    public void eat(){
        System.out.println(stuName + "正在吃饭。。。。");
    }
    //学习
    public void study(){
        System.out.println(stuName + "正在学习。。。。");
    }
    //睡觉
    public void sleep(){
        System.out.println(stuName + "正在睡觉。。。。");
    }
    //考试
    public void exam(){
        System.out.println(stuName + "正在考试。。。。");
    }
    //学生汇报自己的信息
    public void information(){
        System.out.println("我是" + stuName);
        System.out.println("我的学号:" + stuNo);
        System.out.println("我的年龄:" + stuAge);
        System.out.println("我的成绩:" + stuGrade);
    }
}

(2)实例化对象

public class CreatStudents {

    public static void main(String[] args){
        //根据模板实例化一个学生student1
        Student student1 = new Student();
        //给学生添加属性
        student1.stuNo = 1;//学号
        student1.stuName = "张三";//姓名
        student1.stuAge = 20;//年龄
        student1.stuGrade = 89;//成绩
        //张三开始行动
        //张三报告自己的信息
        student1.information();
        //张三吃饭
        student1.eat();

        System.out.println("------分割线------");

        //再创建一个李四
        Student student2 = new Student();
        student2.stuNo = 2;//学号
        student2.stuName = "李四";//姓名
        student2.stuAge = 18;//年龄
        student2.stuGrade = 100;//成绩
        //李四报告自己的信息
        student2.information();
        //李四学习
        student2.study();
    }
}

执行结果:

我是张三
我的学号:1
我的年龄:20
我的成绩:89
张三正在吃饭。。。。
------分割线------
我是李四
我的学号:2
我的年龄:18
我的成绩:100
李四正在学习。。。。

(3)类与对象在内存中的示意图

①主方法进栈。

②在堆中创建new Student()空间,把空间基址给栈中的student1。

③从方法取调入对象属性到开辟的空间,并赋给默认值,并把对象方法的地址保存在空间中。

④根据student1的地址找到堆中属性地址并修改值。

⑤information()入栈,并根据堆内地址找到在方法区的地址,调用函数,函数运行结束后出栈。

⑥主方法出栈。

3.成员变量与局部变量

(1)成员变量:写在类中的变量,有默认值,作用域为整个类。

(2)局部变量:写在方法中的变量,无默认值,作用域仅在方法内,方法运行时创建,结束时消失。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值