Java学习之类(三):构造方法和创建对象
学会类和方法的定义后,我们就可以使用类来声明变量了,用类声明的变量被称为对象,用类声明对象后必须创建对象(为对象分配所用的变量)
类是创建对象的模板,当使用一个类创建一个对象时,也称给出个这个类的一个实例
第一步,先学习构造方法
1、构造方法是类中一个特殊的方法,构造方法的名字必须和其类名相同,并且没有类型。
2、一个类中可以有多个构造方法,但必须保证它们的参数不同(参数的个数不同,或参数的个数相同,但某个参数的类型不同)。
3、若类中没有编写构造方法时,系统会默认生成一个构造方法,并且是无参数,方法体中也没有语句的。
class Point
{int x,y;Point() //构造方法一,若没有编写下面两个构造方法,系统会自动生成此默认的构造方法{}Point(int a) //构造方法二{x = a;}Point(int a,int b) //构造方法三{x = a;y = b;}}
说明一下:
1、如果类中没有自己编写构造方法,那么系统会自动生成构造方法:无参无语句的构造方法
2、如果类中定义了一个或者多个构造方法,那么系统不会提供默认的构造方法
3、构造方法没有类型 void Point(int a,int b) 是错误的
知道了构造方法,那么构造方法是拿来干吗用的呢?
顾名思义,构造方法是拿来构造对象也称创建对象的。
第二步:创建对象
创建对象包括对象的声明和为对象分配变量
1、对象的声明:类的名字 对象的名字;
如: Point one_point;
2、为声明的对象分配变量(创建对象):使用new运算符和构造方法
这里我们拿上一步的Point类来说明
public class Example_1
{public static void main(String args[]){Point one_point,two_point; //声明两个对象one_point = new Point(); //使用构造方法一two_point = new Point(5,6) //使用构造方法二//可以把声明和创建写成一步//Point one_point = new Point();}
}
这里我们简单分析一下
1、第一步:我们声明了两个对象one_point和two_point,因为只是声明,这个对象中还没有任何数据,此时都只是空对象。
空对象不能引用,因为它没有任何"实体",必须再进行为对象分配变量的操作(也就是使用构造方法)
2、第二步:我们分别使用了new运算符和两个不同的构造方法
new Point(5,6);系统会做下列两件事
(1)为x,y两个变量分配内存。如果成员变量在声明时没有指定初值,整型的成员变量默认为0,浮点型为0.0,boolean默认是false,引用型默认是null
(2)new运算符为变量x,y分配内存后,计算出一个称作引用的值(包含变量内存位置和相关信息),如果把这个值赋给two_point"
two_point = new Point(5,6);
那么系统分配的x,y的内存单元由two_point()进行管理
x,y属于对象two_point的实体
总结一下:
1、所谓创建对象,就是为对象分配变量,并获得一个引用,确保这些变量由该对象来操作管理
2、new 运算符只能和类的构造方法进行运算,最后的结果是一个十六进制数,称作对象的引用,把这个引用赋给一个对象(由类声明的对象变量 如 Point two_point)这个对象就拥有了这些被分配内存的成员变量
通过例子加深印象吧
class People
{int height;
}class Cat
{String ear;Cat(String a){ear =a;}
}class Example_2
{public static void main(String args[]){People Li_Ming;Li_Ming = new People(); //使用默认的构造方法创建对象//以上两句等同于People Li_Ming = new People();//虽然People类没有定义构造方法,但是系统会自动生成默认的构造方法(无参无语句)//这时Li_Ming这个对象就拥有一个值为0的变量height;(没有定义初值,系统会进行默认赋值)Cat miao = new Cat("猫有两只耳朵");//使用自己编写的构造方法(自己编写构造方法后,系统不提供默认的构造方法)//这时miao这个对象拥有一个"猫有两只耳朵"的字符串变量ear.}
}
Java学习之类(三):构造方法和创建对象相关推荐
- Java学习 第三章 数组(三)排序算法
** Java学习 第三章 数组(三)排序算法 ** 主要内容:排序算法.排序算法横向比较.Arrays工具类的使用.数组常见异常 1.数组中涉及到的常见算法:排序算法 1.1 排序算法分类:内部排序 ...
- invader的java学习第三天基础篇
invader的java学习第三天基础篇 一.整数的取值范围表 类型名称 数据类型 所占空间 表数范围 字节型 byte 1字节 -128-127 短整型 short 2字节 +-3w(-2^15-2 ...
- java学习笔记(三):前端miniUI控件库入门
java学习笔记(三):前端miniUI控件库入门 最近在一家公司实习学习,一上来就需要学习了解相关的前端内容--miniUI.而这个内容自己本身并没有了解学习过,上手也是遇到了不少的问题,于是想把自 ...
- Java学习(三)JSP学习1
一. 理解JSP技术 JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它 是由Sun Microsystems公司倡导.许多公司参与 ...
- Java学习 第三章 Steam输入输出流
Java 流(Stream).文件(File)和IO Java.io 包几乎包含了所有操作输入.输出需要的类.所有这些流类代表了输入源和输出目标. Java.io 包中的流支持很多种格式,比如:基本类 ...
- JAVA学习 第三章作业
1.程序填空题: 定义一个抽象类Person,其中有一个公共的抽象方法showInfo().然后定义此抽象类的一个子类Student,包括的成员变量有姓名.学号.班级和年龄,且此类中包括两个构造方法. ...
- 1.3(java学习笔记)构造方法及重载
构造方法,用于对象的初始化,在创建对象时被自动调用的特殊方法.构造方法名称与类名一致,通过new调用. 下面通过代码来详细讲解 1 public class Point { 2 int x, y; 3 ...
- java注解和反射——狂神说java学习笔记三
原文链接:公众号狂神说 视频教程[狂神说B站]: https://www.bilibili.com/video/BV12J41137hu 如有侵权,联系立删 什么是注解 Annotation是从JDK ...
- java学习笔记(三)----成员权限,构造函数,this用法
成员权限 本类 同包类 非同包子类 非同包非子类 public y y y ...
最新文章
- SpringBoot注解大全 转
- Windows下安装XAMPP,Wordpress
- python3 numpy. ndarray 与 list 互转方法
- Android 启动白屏,简单解决方法
- Python数模笔记-PuLP库(1)线性规划入门
- Yaf框架视频教程之入门篇【已完成】
- 【题解】Grape luogu1156改 dp
- 阿里芯片大动作!NPU明年6月发布,“平头哥”研发量子芯片
- 2017上海ACM ECL-final 总结
- centos6.5 mysql登陆_centos6.5下mysql无法登陆的问题
- 使用rsyslog+loganalzey收集日志显示客户端ip
- python marshal 对象序列化和反序列化
- 推荐好用的Linux远程连接工具
- 02、差分特性阻抗仿真
- 《电脑十万个为什么》 第四卷 第一章
- 天耀18期 - 10.字符串常用方法【作业】
- 业界首个,冲量在线联合海光信息发布异构隐私计算一体机!
- 利用jsp内置对象实现的简易聊天室
- 【结构体】 结构体引用、结构体数组指针、包含结构的结构体
- 山大计算机学院陈竹敏年龄,第十八届全国自然语言处理青年学者研讨会在山东青岛顺利召开...