java 基础 - 构造函数
来源:互联网 发布:应用搬家软件 编辑:程序博客网 时间:2024/05/21 08:46
【构造函数(无参,有参) 反编译工具】
需求 :用Java类来描述一个婴儿:一个孩子 出生的时候就有名字 (白户)
出生的时候没名字 (黑户)
(黑户的解决方法:可以利用有参的构造方法)
构造函数: ( 类名 + 函数 )
修饰符 类名(){
语句体......;
}
构造函数作用,初始化类对象
构造函数要注意的【小细节】
01.构造函数是没有返回值的
02.构造函数的函数名必须和类名一致
03.如果在类当中没有去书写一个构造函数,那么java编译器就会帮助我们去添加一
个没有参数的构造函数,构造函数是创建对象必须用到的方法
04.如果在类当中已经书写了一个构造函数,那么java编译器就不会帮助我们去添加
一个没有参数的构造函数
05.在类当中可以实现多个函数的的重载,也就是说可以用不同的初始化条件给一个
对象进行初始化
构造函数和普通函数的【区别】
01.返回值 :构造函数是没有返回值的
普通函数必须有返回值,就算真的没有返回值内容,那么也要写上void
02.函数名 :构造函数的函数名和类名相同
普通函数只要符合命名规范就行(驼峰命名法,见名思意,标识符规则)
03.调用方法:构造函数在调用的时候是JAVA虚拟机在创建对象的时候要调用的方法
普通函数是只是对象去调用的函数
04.作用上的:构造函数只做一件事情:创建对象
普通函数就是我们思想在代码中的映射,想做什么做什么
【反编译命令】:
java -c -l -private(-p) (class文件地址)
c 反编译选的
l 显示行号和变量
p 显示所有成员和类
[发现] 在代码当中我们并没有书写任何一个构造方法,但是刚刚通过反编译工具发现,
在给我们的.class多了一个一以 类名() ; 这样的格式出现的方法。
这个方法是java编译器给我们提供的默认的构造方法,无参构造方法;
class Baby{
int id;
private String name;
public Baby(){ //【无参构造方法】没有参数的构造方法,系统默认给出的
System.out.println("无参方法已被调用");
}
public Baby(int i, String n){ //【有参的构造方法】在使用时传入参数
id = i;
name = n;
System.out.println("有参方法已被调用");
}
public void cry(){
System.out.println("哇哇的哭~~~");
}
}
public class Demo0901 {
public static void main(String[] args) {
//出生的时候没有名字
//Baby yuge = new Baby();
Baby lunbu = new Baby(1, "比伦布" );
System.out.println("Name : " + lunbu.getName());
}
}
new Student().study();
//Student 后面不添加参数 调用的是无参数构造函数
// 后面添加有参数 调用的是 有参数构造函数
【代码块】
小孩出生会哭cry 自带被动
[解决方案一 ]:很简单,把cry方法,放到构造函数里面
[瓶颈] :万一有1000000个构造函数?
[问题] :所有类对象
[后期]
Java 构造代码块
格式:
{
执行代码 ;
}
【对比】
构造代码块 :对这个类的对象进行统一初始化
构造函数; 对单个对象进行初始化
构造代码块的位置必须是在 : 构造函数之前
代码块分三大类:
1.构造代码块
2.局部代码块(基本没用,缩短局部变量的生存周期,解决内存)
3.静态代码块 static
class CutBaby{
int id = 5; //成员变量在定义阶段进行赋值
//只表示id 如果没有被修改的时候 默认值为5
//注意 并不占用空间
String name;
{
id =7 ; ======>>代码块
}
public CutBaby(){
System.out.println("无参的构造函数");
}
public CutBaby(int i, String n){
id = i;
name = n;
System.out.println("有参的构造函数");
}
}
三种对于成员赋初值的操作 .
1.定义时默认值
2.构造代码块
3.构造函数
.
优先级第一的是构造函数 构造函数里面对成员变量的修改是最终值
其次:1定义时默认值 2 构造代码块
谁在后谁确定最终值
java 编译器在编译代码的时候,会把我们的代码进行重新排序
会把成员变量定义
【就近原则】
在类当中存在同名的变量名 ; Java编译器就会认为最近的变量名是该语句所操作的变量名
【this 关键字】
this代表的就是调用当前方法的对象
就是一个对象的关键字,表示当前对象
this关键字的作用
01如果在同一个函数当中发现有相同的变量名。就用this关键字来区分不同的变量
this.变量名表示成员变量
02this 关键字还能调用类当中的其他函数,这里包括成员函数和构造函数
1.使用this调用构造函数的时候,使用的格式是 this(参数)
2.在一个构造函数A当中想要构造函数B,那么B函数必须在A函数的内的第一行
3.使用这种方式要尤为注意,稍不留神,就死循环了~~~
不同的构造函数相互调用的时候,要注意不能同时调用
- JAVA 基础 - 构造函数
- 【Java基础】--构造函数
- java 基础 - 构造函数
- Java基础 构造函数
- Java基础 构造函数
- java基础入门-构造器-构造函数
- JAVA基础之构造函数
- Java基础--类--构造函数
- 构造函数--Java基础039
- java基础之构造函数
- Java基础之构造函数
- Java基础07-构造函数与this
- java语言基础-构造函数-作者:逝秋
- 关于java构造函数基础数问数答
- 黑马程序员-----Java基础-----构造函数
- JAVA基础--db07_java构造函数-this-static
- Java基础之构造函数和重载
- java基础学习之构造函数
- 洛谷1875
- PAT B1011
- 六大设计原则,迪米特法则
- 【2016】十一月英语学习总结
- 一道题
- java 基础 - 构造函数
- 【t053】整数去位
- Ubuntu下安装QGIS
- VB查找sqlserver中是否存在某张表,不存在则创建
- UVA 10305 拓扑排序 删边法
- 这下好了,连热情都没了
- PAT B1012
- 【HDU 1251 统计难题】+ 字典树
- 欢迎使用CSDN-markdown编辑器