构造方法

什么是构造方法

在类实例化对象时运行的一种特殊的方法

为什么需要构造方法

构造方法适合为对象的属性赋初值

编写构造方法

public 类名(){
//方法体
}

构造方法不写返回值

构造方法的方法名必须和类名相同

构造方法不能使用对象调用只在实例化对象时运行

new 类名(参数列表);//调用构造方法

注意:

如果一个类中没有编写构造方法那么系统会自动为这个类生成一个无参构造

反之不会生成一个无参构造

构造方法可以重载

return关键字

返回方法指定类型的值(这个值是确定的)结束方法的执行(仅一个return)。

语法:

public int A(int a){
reeturn a; }

成员变量和局部变量

类中定义的变量(属性)就是成员变量。
方法中定义的变量,或形式参数就是局部变量。

区别

作用域不同

成员变量可以在当前类的任何方法中使用。 
局部变量只能在声明他的方法中使用。

初始值不同

成员变量有初值默认值。
(0\0.0\false\null)
局部变量没有初始值。

优先级不同

成员变量和局部变量同名时。
局部变量具有更高的优先级。
如果想访问成员变量需要在变量名前加this. 。

this关键字

this是对象在方法中对自身的引用

用法

this.属性

区分成员变量和局部变量

this.方法()

this()
调用当前类的构造
必须编写在构造方法中
必须编写在方法中的第一行

构造函数之间的调用:

this:区分局部变量和成员变量同名的情况。

构造函数之间的调用只能通过this语句来完成。

构造函数之间进行调用时this语句只能在第一行。

构造方法要先执行,如果构造方法当中还有初始化,那就区执行更细节的初始化。

构造代码块

特点:

对象一建立就运行了,而且优先于构造函数执行。

语法:

{
System.out.println("........");
}

作用:

给对象进行初始化的。

构造代码块和构造方法的区别?

1.构造方法是对应的对象进行初始化。

2.构造代码块是给所有的对象进行统一初始化。

构造代码块种定义是不同对象共性的初始化内容。

引用数据类型

特征(String、自造类、数组)

变量保存的是这个对象的引用

在方法中 变量的引用保存在栈中 对象保存到堆中

Dog d=new Dog("旺财",3,17.6,"金毛");
Dog dd=d;
dd.name="亏财";
System.out.println(d.name);

引用数据类型数组

Dog[] dogs=new Dog[4];
//默认值:{null,null,null,null}

引用数据类型数组元素的默认值是null

null指针异常

null是个常量,表示当前引用,没有引用任何对象

当这样的null对象打.调用属性或方法是,会出现null异常

如果在遍历引用类型数组时发生null指针异常,需要在元素调用属性或方法前加个if判断

多维数组(二维数组)

普通数组中,数组元素是具体数据

多维数组中,数组元素还是数组

Day02:对象和类(下)的更多相关文章

  1. Python-面向对象(类)二

    一.成员修饰符 • 共有成员 • 私有成员 __+字段 __:成员修饰符 无法直接访问,只能通过该成员所属类的方法简介访问 class Foo: def __init__(self, name, ag ...

  2. Python-面向对象(类)一

    一.如何创建类 class cls: pass 二.创建方法 构造方法: __init__(self, arg) obj = 类('a1') 普通方法: obj = 类('xxx') obj.普通方法 ...

  3. CoreJava学习笔记1-基本概念、对象和类

    一.    java的基本程序设计结构 (一)   java共有8种基本类型:4种整型,2种浮点类型,1种char,1种boolean. 1)       4种整型:byte(1).short(2). ...

  4. Python全栈--9.1--面向对象进阶-super 类对象成员--类属性- 私有属性 查找源码类对象步骤 类特殊成员 isinstance issubclass 异常处理

    上一篇文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中) 对象 ...

  5. winform中利用反射实现泛型数据访问对象基类(1)

    考虑到软件使用在客户端,同时想简化代码的实现,就写了一个泛型的数据访问对象基类,并不是特别健全,按道理应该参数化的方式实现insert和update,暂未使用参数化,抽时间改进. /// <su ...

  6. Java对象与类中的一个小练习

    一直在Eclipse里做练习.是做一个练习,执行一个的那种.刚刚学习了Java的对象与类,练习中把类和执行放在同一包下的两个.java文件里面了.是可以执行的.(Get) 相关代码: public c ...

  7. 关于Object类下所有方法的简单解析

    类Object是类层次结构的根类,是每一个类的父类,所有的对象包括数组,String,Integer等包装类,所以了解Object是很有必要的,话不多说,我们直接来看jdk的源码,开始我们的分析之路 ...

  8. OLE:对象的类没有在注册数据库中注册

    我在网上下载了破解版的SAS9.3,用了一段时间之后,今天打开就填出一个提示框:OLE:对象的类没有在注册数据库中注册 激活该对象所需的应用程序不可用.是否用"转换--"将其转换为 ...

  9. JAVA基础复习与总结<一> 对象与类的概念_内部类_继承与多态

    一.对象与类 类:类是一个模版,它描述了一类对象的行为和状态. class animal { private int color; private int size; public void eat ...

随机推荐

  1. 用Python实现的二分查找算法(基于递归函数)

    一.递归的定义 1.什么是递归:在一个函数里在调用这个函数本身 2.最大递归层数做了一个限制:997,但是也可以自己限制 1 def foo(): 2 print(n) 3 n+=1 4 foo(n) ...

  2. sql 导入文件

    zai SQLQuery4.sql 文件中 --BULK INSERT Table_1 from 'D:\aaaa#azzz.txt' with(fieldterminator=',',rowterm ...

  3. jquery getScript动态加载JS方法改进详解

    有许多朋友需要使用getScript方法动态加载JS,本文将详细介绍此功能的实现方法 $.getScript(url,callback) 这个方法是jquery自身提供的一个用于动态加载js的方法.当 ...

  4. Nowcoder 练习赛 17 C 操作数 ( k次前缀和、矩阵快速幂打表找规律、组合数 )

    题目链接 题意 :  给定长度为n的数组a,定义一次操作为: 1. 算出长度为n的数组s,使得si= (a[1] + a[2] + ... + a[i]) mod 1,000,000,007: 2. ...

  5. 【BZOJ2459】 [BeiJing2011]神秘好人

    Description 有一个神秘好人跟Bdcxq玩一个游戏,如果Bdcxq成功完成了这个游戏,那么他将会得到一件礼物. 这个游戏是这样的: 有一个梯子形的图如下,每条边都有一个权值. 神秘好人一开始 ...

  6. 我不熟悉的vector

    构造函数 使用迭代器构造vector的一种方式: //将v[begin(), end())区间中的元素拷贝给本身 vector(v.begin(),v.end()); 在这个构造函数中,传入普通数组也 ...

  7. confluence 附件docx文件 乱码处理

    服务器安装字体库 Fontconfig是一个用于配置和自定义字体访问的库 yum -y install fontconfig 拷贝需要的字体文件 fonts.zip(或自己电脑中的字体文件c:/Win ...

  8. JS框架_(Laydate.js)简单实现日期日历

    百度云盘 传送门 密码:71hf JavaScript日期与时间组件_____laydate.js 日期日历效果: <!DOCTYPE html> <html> <hea ...

  9. DVWA--CRSF

    首先我们对CRSF进行一个介绍 CSRF,全称Cross-site request forgery,翻译过来就是跨站请求伪造,是指利用受害者尚未失效的身份认证信息(cookie.会话等),诱骗其点击恶 ...

  10. Java缓存技术有哪些

    我们用ehcache在本地,分布式用redis和memcache,各有各的好处,现在企业都是应用很多种中间件供俺们码农选择.