Java面向对象(1)
来源:互联网 发布:阿里云学生服务器饥荒 编辑:程序博客网 时间:2024/06/05 00:56
1、新建实例对象的成员变量的初始化
对象创建后,其成员变量可以按照默认的方式初始化:
1、数值类型(byte、short、int、long、float、double)都为0;
2、boolean型为false;
3、char型为\u0000;
4、引用类型为null。
2、引用类型
除8种基本类型之外,用类、接口、数组等声明的变量称为引用类型变量,简称“引用”。
引用类型变量中存储的是某个对象在内存中的地址信息,通常称为指向该类的对象。引用的功能在于访问对象。
可以给引用类型变量赋值为null,表示不指向任何对象。当某个引用类型变量为null时无法对对象实施访问。此时,如果通过引用访问成员变量 或调用方法,会产生NullPointerException异常。
相同类型的引用类型变量之间赋值,不会创建新的对象,只是使其指向同一个对象。
3、方法的重载
方法的签名包含两个方面:方法名和参数列表。一个类中,不可以有两个方法的签名完全相同。
在Java语言中,允许多个方法的名称相同,但参数列表不同,称之为方法的重载(overload)。
编译器在编译时会根据签名来绑定调用不同的方法。
4、this关键字
this关键字用在方法体中,用于指向调用该方法的当前对象。
5、构造方法(构造器)
在Java语言中可以通过构造方法实现对对象成员变量的初始化。构造方法是在类中定义的方法。但不同于其他的方法。
1、构造方法的名称必须与类名同名。
2、构造方法没有返回值,但也不能写void。
3、任何一个编译后的类都必须含有构造方法。如果源程序中没有定义,编译器在编译时将为其添加一个无参的空构造方法(称之为“默认的构造方法”)。
4、当自定义了构造方法后,Java编译器将不再添加默认的构造方法。
//构造方法的重载package oo.day02;//格子类public class Cell { int row; //行号 int col; //列号 Cell(int row,int col){ this.row = row; this.col = col; } Cell(int n){ this(n,n); //调用构造方法 } Cell(){ this(0,0); //调用构造方法 } void drop(){ //下落1格 row++; } void drop(int n){ //下落n格 row += n; } void moveLeft(){ //左移1格 col--; } void moveLeft(int n){ //左移n格 col -= n; } String getCellInfo(){ //获取格子坐标 return row+","+col; }}
6、引用类型数组
在Java中,数组属于引用数据类型。数组对象在堆中存储,数组变量属于引用类型,存储数组对象的地址信息,指向数组对象。
数组的元素可以看成数组对象的成员变量(只不过类型全都相同)。数组的元素可以是任何类型,当然也包括引用类型。
需要掌握以下四种形式的引用类型数组:
(1)
Cell[] cells = new Cell[4]; cells[0] = new Cell();cells[1] = new Cell(2);cells[2] = new Cell(5,4);cells[3] = new Cell(2,6);
(2)
Cell[] cells = { new Cell(), new Cell(1), new Cell(5,4), new Cell(2,7) };
(3)
Cell[] cells = new Cell[]{ new Cell(), new Cell(1), new Cell(5,4), new Cell(2,7) };
(4)
int[][] arr = new int[3][];arr[0] = new int[2];arr[1] = new int[3];arr[2] = new int[2];arr[1][1] = 100;
package oo.day02;//T型俄罗斯方块public class T { Cell[] cells; T(){ this(0,0); } T(int row,int col){ cells = new Cell[4]; cells[0] = new Cell(row,col); cells[1] = new Cell(row,col+1); cells[2] = new Cell(row,col+2); cells[3] = new Cell(row+1,col+1); } void drop(){ //下落 for(int i=0;i<cells.length;i++){ cells[i].row++; } } void moveLeft(){ //左移 for(int i=0;i<cells.length;i++){ cells[i].col--; } } void moveRight(){ //右移 for(int i=0;i<cells.length;i++){ cells[i].col++; } } void print(){ //打印每个格子的坐标 for(int i=0;i<cells.length;i++){ String s = cells[i].getCellInfo(); System.out.println(s); } }}
- java--面向对象(1)
- java面向对象(1)
- Java面向对象(1)
- Java面向对象(1)
- Java面向对象(1)
- java 面向对象1
- java面向对象1
- java--面向对象1
- java面向对象1
- JAVA面向对象1
- JAVA(七)java面向对象1-面向对象的概念,类与对象
- java面向对象易忘点(1)
- java基础--面向对象(1)
- Java基础知识之面向对象(1)
- Java面向对象编程(1)
- ”黑马程序员“java面向对象(1)
- Java学习笔记(面向对象1)
- java面向对象初探(1)
- 51Nod 1138 连续整数的和
- c++模拟实现vector
- MySQL 的学习(二:MySQL Workbench的安装与使用)
- 特征值和特征向量
- [Java基础]内部类与向上转型来隐藏实现
- Java面向对象(1)
- 面向对象①
- UI5开发 – OData Model编程
- 理解python中的self
- 数据结构实验之图论五:从起始点到目标点的最短步数(BFS)
- [Python]网络爬虫:利用urllib2通过指定的URL抓取网页内容
- 收集箱子
- ubuntu 16.04 LTS
- 阿里开发规范--笔记(二)