JAVA基础学习之路(三)类定义及构造方法
类的定义及使用
一,类的定义
class Book {//定义一个类
int price;//定义一个属性
int num;
public static int getMonney(int price, int num) {//定义一个方法
return price*num;
}
}
public class test2 {
public static void main(String args[]) {
Book monney = new Book();//声明并实例化对象
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,就表示开辟堆内存,只要开辟了堆内存,一旦堆内存空间开辟了,里面就会有对象中所有属性,所有属性的内容为默认值

实例化对象其实就是开辟堆内存
三,类的封装
class Book {
private int price;
private int num;
public void setPrice(int p) {
price = p;
}
public void setNum(int n) {
num = n;
}
public int getPrice() {
return price;
}
public int getNum() {
return num;
}
public int getMonney(int price, int num) {
return price*num;
}
}
public class test2 {
public static void main(String args[]) {
Book monney = new Book();
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基础学习之路(三)类定义及构造方法的更多相关文章
- Java基础学习笔记(三)
18.2.1无参无返回值的方法 18.2.1.1定义方法的语法格式 public static void 方法名称(){ 方法体 } 方法调用 类名.方法名称(); 注意:在Java中,同一个类中的方 ...
- JAVA基础学习之路(一)基本概念及运算符
JAVA基础概念: PATH: path属于操作系统的属性,是系统用来搜寻可执行文件的路径 CALSSPATH: java程序解释类文件时加载文件的路径 注释: 单行注释 // 多行注释 /*... ...
- JAVA基础学习之路(四)定义简单java类
简单java类开发一般原则: 类名称必须有意义,再怎么说,要让人家看的明白吧 类之中所有属性必须使用private封装,并提供setter,getter方法 类之中可以有多个构造方法,但是必须保留有一 ...
- JAVA基础学习之路(八)[1]String类的基本特点
String类的两种定义方式: 直接赋值 通过构造方法赋值 //直接赋值 public class test2 { public static void main(String args[]) { S ...
- JAVA基础学习之路(七)对象数组的定义及使用
两种定义方式: 1.动态初始化: 定义并开辟数组:类名称 对象数组名[] = new 类名称[长度] 分布按成:类名称 对象数组名[] = null: 对象数组名 = new 类名称[长度]: 2 ...
- JAVA基础学习之路(五)数组的定义及使用
什么是数组:就是一堆相同类型的数据放一堆(一组相关变量的集合) 定义语法: 1.声明并开辟数组 数据类型 数组名[] = new 数据类型[长度]: 2.分布完成 声明数组:数据类型 数组名 [] = ...
- JAVA基础学习之路(二)方法定义,重载,递归
一,方法的定义: package test; public class test1 { public static void main(String args[]) { int result = ad ...
- JAVA基础学习之路(九)[2]String类常用方法
字符与字符串: 1.将字符数组变为字符串(构造方法) public String(char[] value) Allocates a new String so that it represents ...
- Java基础学习笔记十二 类、抽象类、接口作为方法参数和返回值以及常用API
不同修饰符使用细节 常用来修饰类.方法.变量的修饰符 public 权限修饰符,公共访问, 类,方法,成员变量 protected 权限修饰符,受保护访问, 方法,成员变量 默认什么也不写 也是一种权 ...
随机推荐
- VS进行调试时IIS Express显示Access Define-坑爹的腾讯TGP助手
今天在家使用VS进行调试的时候发现IIS Express死活启动不了,改用IIS也是不行,尝试了网上所说的所有办法,改了各种权限,找了各种注册表,最终未果,然后我想起之前被腾讯坑过的那次:http:/ ...
- python3 基于tcp 简单client和server
客户端代码 from socket import * #客户端 client=socket(AF_INET,SOCK_STREAM) #通讯地址 client.connect(('172.18.100 ...
- 系统优化怎么做-JVM优化之VisualVM
大家好,这里是「聊聊系统优化 」,并在下列地址同步更新 博客园:http://www.cnblogs.com/changsong/ 知乎专栏:https://zhuanlan.zhihu.com/yo ...
- Java并发包:AtomicBoolean和AtomicReference
AtomicBoolean AtomicBoolean是一个读和写都是原子性的boolean类型的变量.这里包含高级的原子操作,例如compareAndSet().AtomicBoolean位于J ...
- MySql is marked as crashed and should be repaired问题
在一次电脑不知道为什么重启之后数据库某表出现了 is marked as crashed and should be repaired这个错误,百度了一下,很多都是去找什么工具然后输入命令之类的,因为 ...
- 可能是catalan数吧
What's the number of distinct BSTs containing nodes {1, 2, 3 ,4}? 包含节点{1,2,3,4}的不同二叉搜索树有多少棵? int Num ...
- Linux中文件I/O函数
一.lseek函数 每个打开文件都有一个与其相关联的“当前文件偏移量”.它通常是一个非负整数,用以度量从文件开始处 计算的字节数.通常,读.写操作都从当前文件偏移量处开始,并使偏移量增加所读写的字节数 ...
- PHP在foreach中对$value赋值
foreach ($data as $key => $value) { $data[$key]['name'] = '测试在value中赋值';}
- PADS随记
在PADS,PCB板设计中,怎么一次就把丝印的大小设置好? CTRL+ALT+F 组合键 打开 选择过滤器(Filter) 如下图 去掉其他的勾选,只选择 Labels . 之后在板子上鼠标拖动选上 ...
- 嘿,C语言(持续更新中...)
---恢复内容开始--- 上次简单介绍了一下C语言,这次说说数据与计算程序,那么话不多说,进来看看. 第二章 数据与简单的计算程序 一:数据 既然说到了数据,那么说说什么是写数据呢? 表面意 ...