类的定义及使用

一,类的定义

classBook {//定义一个类intprice;//定义一个属性intnum;public static int getMonney(int price, intnum) {//定义一个方法return price*num;

}

}public classtest2 {public static voidmain(String args[]) {

Book monney= newBook();//声明并实例化对象

monney.price= 10;

monney.num= 20;

System.out.println(monney.getMonney(10,20));

}

}

二,内存分析

类是引用类型,创建时会申请分配内存

堆内存:保存每一个对象的属性,需要new关键字才可以创建

栈内存:保存一块堆内存的地址

1,当使用Book bk = new Book();时,内存情况如下:

为属性赋值之后,如下

2.分步创建对象,实例化

Book monney = null;

monney = new Book();

任何情况下,只要看见了关键词new,就表示开辟堆内存,只要开辟了堆内存,一旦堆内存空间开辟了,里面就会有对象中所有属性,所有属性的内容为默认值

实例化对象其实就是开辟堆内存

三,类的封装

classBook {private intprice;private intnum;public void setPrice(intp) {

price=p;

}public void setNum(intn) {

num=n;

}public intgetPrice() {returnprice;

}public intgetNum() {returnnum;

}public int getMonney(int price, intnum) {return price*num;

}

}public classtest2 {public static voidmain(String args[]) {

Book monney= newBook();

monney.setPrice(10);

monney.setNum(20);

System.out.println(monney.getMonney(10,20));

}

}

在构造类的过程中,属性尽量都写成private,这样,属性就对外部隐藏。通过setter方法设置属性值,getter方法获取属性值。外部若要访问类的属性,只有通过setter方法。

四,构造方法

类名  对象名 = new 类名();

1.类名:类的名字,决定对象的属性和方法

2.对象名:对象的唯一标识

3.new:开辟堆内存,没有new则无法实例化对象

4.类名()  实际上是调用了一个和类名相同的方法,即构造方法

我们从来没有定义过构造方法,之所以可以使用,是java在编译时,为我们添加了一个名称与类相同,无参数,无返回值的方法

构造方法只在实例化新对象时使用一次,就是在book = new Book();时使用,而普通的方法实例化对象后可以多次调用

构造方法的作用:在 类对象实例化的时候设置属性的初始化内容,即构造方法是为属性初始化准备的,一个类中至少保留一个构造方法

java用构造方法定义book类_JAVA基础学习之路(三)类定义及构造方法相关推荐

  1. java的时间日期类_Java基础学习:日期时间类

    Date 类 所在的包:java.util.Date Date 类表示特定的瞬间,精确到毫秒.创建对象的值为从1970年1月1日00:00:00 到当前系统显示时间所经历的毫秒数. 例如:public ...

  2. java定义构造方法_JAVA基础学习之路(三)类定义及构造方法

    类的定义及使用 一,类的定义 classBook {//定义一个类intprice;//定义一个属性intnum;public static int getMonney(int price, intn ...

  3. typescript学习之路(三) —— ts定义类的方法(包含es5以及es6的定义类)

    提起类,不得不说一下,强类型编程语言,如php,java,c++等都有类的概念.而js作为一门弱类型语言,是没有类这个概念的,虽然也能模拟类的实现,但总归不是类.so,ts也只是模拟类而已,使得更贴切 ...

  4. Java基础学习——第十章 枚举类注解

    Java基础学习--第十章 枚举类&注解 一.枚举类(enum) 1. 枚举类的概念 枚举类:类的对象只有有限个,确定的 线程状态:创建.就绪.运行.阻塞.死亡 当需要定义一组常量时,强烈建议 ...

  5. 2.在某应用软件中需要记录业务方法的调用日志,在不修改现有业务类的基础上为每一个类提供一个日志记录代理类,在代理类中输出日志,例如在业务方法 method() 调用之前输出“方法 method() 被

    2.在某应用软件中需要记录业务方法的调用日志,在不修改现有业务类的基础上为每一个类提供一个日志记录代理类,在代理类中输出日志,例如在业务方法 method() 调用之前输出"方法 metho ...

  6. Java学习之路3——方法定义、调用【重拾Java】

    Java学习之路3--方法定义.调用[重拾Java] 方法定义 为什么要写方法 方法完整的定义形式.调用 方法定义的格式 修饰符 返回值类型 返回值 调用格式 方法重载 方法定义 为什么要写方法 对于 ...

  7. WiFi基础学习到实战(三:WiFi网络“物理层”)

    欢迎大家一起学习探讨通信之WLAN.上节我们对802.11标准基于OSI模型,在"数据链路层"的定义进行了解,数据传送经过LLC层被封装为一个MSDU,通过MAC层封装为一个MPD ...

  8. 拒绝从入门到放弃_《鸟哥的 Linux 私房菜 — 基础学习篇(第三版)》必读目录

    目录 目录 前言 关于这本书 必看知识点 最后 前言 相信部分刚进入这个行业的新同学会对一个问题感到疑惑,为什么从培训学校出来的学员不被欢迎? 这里记录下一些我个人的看法(博主也曾有面试新员工的经历) ...

  9. 电子书 鸟哥的Linux私房菜 (基础学习篇 第三版).pdf

    <鸟哥的Linux私房菜 (基础学习篇 第三版)>是颇具知名度的Linux入门书<鸟哥的Linux私房菜:基础学习篇>的全新版,全面而详细地介绍了Linux操作系统. 全书分为 ...

最新文章

  1. 人工智能可落地项目总结
  2. php 数组键值分离,array_keys array_values::PHP数组键名于键值分离
  3. 计组(唐朔飞)第一章自我总结
  4. 【Linux】一步一步学Linux——alias命令(205)
  5. sqlyog怎么设置默认值_物联网卡三网APN设置
  6. python 报错继续执行_Python报错不要慌,这三个关键词帮你解决问题!
  7. emctl start dbconsole失败问题的解决
  8. 经常看到一种说法,说未来普通人翻身,将会越来越难
  9. Endianness
  10. 马尔科夫决策过程(MDP) : BlackJack (MC-Off Policy)
  11. C语言学生管理系统(链表实现)
  12. mysql宾馆客房管理系统视频_java swing mysql实现的酒店宾馆管理系统项目源码附带视频指导运行教程...
  13. linux mp4box安装,视频处理利器 MP4Box常用的12个命令
  14. CSDN/博客园复制代码空格报错问题解决
  15. Stylus入门教程--实例(1)
  16. 自学PHP 环境搭建
  17. matlab 图片RGB颜色提取
  18. effective c++ 学习笔记之 Shifting from c to c++
  19. 究竟什么时候需要用RTOS?
  20. 基于MATALB的多光谱影像与全色影像(高分辨率)的融合的几种方法

热门文章

  1. KMP算法求回溯数组的步骤
  2. 通过loganalyzer展示数据库中的日志
  3. 模块架构不是软件成功的“决定因素”
  4. Unity3D常用代码总结
  5. android 广播机制
  6. 实现nginx上配置免费证书Let's Encrypt
  7. Spring基础16——使用FactoryBean来创建
  8. Centos7 下 配置 rsync 以及 rsync+inotify 实时同步
  9. nodejs -- promise的返回
  10. 安装EBS前期检查工具 - RDA - Health Check / Validation Engine Guide