前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java中的类与对象(基础篇七)

Java中的类与对象(基础篇七)

作者头像
故里
发布2020-11-25 15:36:33
3240
发布2020-11-25 15:36:33
举报
文章被收录于专栏:故里学Java

Java是一门面向对象的编程语言,面向对象是一种程序设计思想,我们都是在面向对象思想的指引下去设计、开发计算机程序。Java中有“万物皆对象”的说法,这里的对象泛指现实中一切事物,每个事物都具有有自己的属性和行为。

一、类和对象介绍

类:是一组相关属性和行为的集合。举例:手机

对象:是一类事物的具体体现。举例:小米10

类与对象的关系:

  • 类是对一类事物的描述,是抽象的。
  • 对象是对一类事物的实例,是具体的。
  • 类是对象的模板,对象是类的实体。

类的定义:

现实世界的一类事物:

属性:事物的状态信息 行为(功能):事物能够做什么。

Java中用class描述事物也是如此:

成员变量:对应事物的属性 成员方法:对应事物的行为

格式:

代码语言:javascript
复制
public class ClassName {  //大驼峰  见名知意
  //属性---->成员变量
    //行为/功能--->成员方法
}
  • 定义类:就是定义类的成员( 成分 ),包括成员变量(属性)和成员方法(行为/功能)。
  • 成员变量:和以前定义变量几乎是一样的。只不过位置发生了改变。在类中,方法外
  • 成员方法:和以前定义方法几乎是一样的。只不过把static去掉

类的定义格式举例:

学生:

属性: 姓名 年龄 成绩........

行为: 学习 吃饭 睡觉 打篮球

代码语言:javascript
复制
public class Student {
    //成员变量
    String name;//姓名
    int age;//年龄

    //成员方法
    //学习的方法
    publicvoid study() {
        System.out.println("好好学习,天天向上");
    }

    //吃饭的方法
    publicvoid eat() {
        System.out.println("学习饿了要吃饭");
    }
}

对象及使用

创建对象格式

代码语言:javascript
复制
类名   对象名 = new 类名();

类型名  变量名 = new 类型名();
Student xiaoming = new Student();

使用对象访问类中的成员:

代码语言:javascript
复制
变量名.成员变量;//访问成员变量  使用 .
变量名.成员方法();//访问成员方法 使用 .

类与对象的练习

代码语言:javascript
复制
public class Phone {
    // 成员变量
    String brand; //品牌
    int price; //价格
    String color; //颜色

    // 成员方法
    //打电话
    public void call(String name) {
        System.out.println("给"+name+"打电话");
    }

    //发短信
    public void sendMessage() {
        System.out.println("群发短信");
    }
}

定义测试类:

代码语言:javascript
复制
public class Test02Phone {
    public static void main(String[] args) {
        //创建对象
        Phone p = new Phone();

        //输出成员变量值
        System.out.println("品牌:"+p.brand);//null
        System.out.println("价格:"+p.price);//0
        System.out.println("颜色:"+p.color);//null
        System.out.println("------------");

        //给成员变量赋值
        p.brand = "锤子";
        p.price = 2999;
        p.color = "棕色";

        //再次输出成员变量值
        System.out.println("品牌:"+p.brand);//锤子
        System.out.println("价格:"+p.price);//2999
        System.out.println("颜色:"+p.color);//棕色
        System.out.println("------------");

        //调用成员方法
        p.call("小明");
        p.sendMessage();
    }
}

二、对象的内存图

1. 一个对象调用一个方法内存图

在栈内存中运行的方法,遵循“先进后出,后进后出”的原则。变量phone指向堆内存中的空间,寻找方法信息,去执行该方法。方法并不是在堆内存中,而是在方法区中。

2. 两个对象调用一个方法内存图

对象调用方法时,根据对象中方法标记(地址值),去类中寻找方法信息。这样哪怕是多个对象,方法信息只保存一份,节约内存空间。

3. 对象作为参数传递到方法中的内存图

引用类型作为参数,传递的是地址值。所以在main方法中给phone属性赋值,对象传入show方法中能够打印出对应设置的值。

三、成员变量和局部变量区别

成员变量( 属性,成员属性 , 字段)

变量根据定义位置的不同,我们给变量起了不同的名字。

代码语言:javascript
复制
public class Car{
    String color;  //成员变量
    public void drive(){
        int speed = 80;    //局部变量
        System.out.println("时速:"+speed);
    }
}

成员变量和局部变量区别:

不同点

局部变量

成员变量

在类中的位置不同

方法中或方法声明上

类中,方法外

作用范围不一样

方法中

类中

初始化值的不同

没有默认值,必须先定义,赋值,后使用

有默认值

在内存中的位置不同

栈内存

堆内存

生命周期不同

随着方法的调用而存在,随着方法调用完毕消失

随着对象的创建而存在,随着对象的消失而消失

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 故里学Java 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、类和对象介绍
  • 二、对象的内存图
  • 三、成员变量和局部变量区别
相关产品与服务
短信
腾讯云短信(Short Message Service,SMS)可为广大企业级用户提供稳定可靠,安全合规的短信触达服务。用户可快速接入,调用 API / SDK 或者通过控制台即可发送,支持发送验证码、通知类短信和营销短信。国内验证短信秒级触达,99%到达率;国际/港澳台短信覆盖全球200+国家/地区,全球多服务站点,稳定可靠。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档