类的内部成员Person (1,2,3,4表示他们重要性的级别)
2.属性---静态描述类的特征(变量 存值) name
1.方法---动态描述类的行为(做事情) eat
3.构造方法---用来创建当前类的对象(方法 很特殊)
4.程序块(代码块)---理解为就是一个方法(非常特殊的 无修饰符无参数无返回值无名字)
构造方法(只有它的名字首字母大写)
1.作用:构造当前类的对象
2.权限修饰符 与类一致的方法名(参数列表)【抛出异常】{方法体}
// 少了结构 特征修饰符(没有) 返回值类型(结构没有)
3.用法 new关键字调用 列:
public class Person {
public Person(){
System.out.println("我是无参数的默认的构造方法");
}
public Person(String name,int age,String sex){
System.out.println("我是带参数的构造方法");
}
}
Person p = new Person("郑中拓",18,"男");
4.特点:
1.在每个类中都有构造方法,若自己没在类中定义构造方法,则系统自动默认产生无参数构造方法
如果在类中定义构造方法,则覆盖默认无参数的构造方法
2.构造方法存在重载
5.每一个类都有构造方法
若不定义 系统会默认提供构造方法
为什么要定义构造方法? 什么时候需要设计构造方法?
在创建对象的同时 想要一并做一些事情 默认提供的构造方法是不会做的
这个时候我们可以自己定义构造方法(无参数的构造方法内做事 也可以定义带参数的)
建议大家 以后若自己定义带参数的构造方法
将系统提供的默认无参数构造方法也一起写出来 构成 构造方法的重载
程序块(代码块)
1.作用: 跟普通方法一样 做事情的
2.写法: 可以认为程序块是一个 没有修饰符 没有参数 没有返回值 没有名字的特殊方法
{
}
3.用法: 块也需要调用才能执行 我们自己调用不到(没有名字)
每一次我们调用构造方法之前 系统会帮我们自动的调用一次程序块 让他执行一遍
4.特点: 没有什么重载的概念(压根连名字都没有 连参数都没有)
但是可以在类中定义 多个程序块
5.块可以在里面写一些程序 我想要在创建对象之前执行
构造方法之前调用
this关键字的使用
构造方法中 属性与变量重名 必须需要一个代替词 代替对象
1.是一个关键字(指代词) 代替的是某一个对象 (当前调用属性或方法时的那个对象)
2.this既然代替的是一个对象
this可以调用什么? 属性 方法 可以
this可以调用构造方法么? 可以 在一个构造方法内可以调用另一个构造方法
通过this(); 省略了构造方法的名字(必须与类名一致)
必须在另一个构造方法内调用 必须在程序的第一行
构造方法 一般方法 有顺序 认为构造方法早于一般方法
在一般方法内调用构造方法呢? 不行
构造方法可以重载 构造方法 调用另一个构造方法呢?
3.this调用的过程可以放置在哪个位置写?
调用属性或方法 这一行代码 可以放置在类中的任何成员位置 上下顺序随意
5/14补充
this关键字方法之间来回调用,写法是好用的 执行可能会产生StackOverflowError栈溢出错误