构造方法与类的名称一样
public Person(){
System。}
出现new语句的时候才出现构造方法
属性是在开辟堆内存的时候形成的
public void Person()命名不标准 就是普通方法
与public Person() 构造方法
不能用void 来定义构造方法
有参构造在无参执行的时候会报错
构造方法的调用可以一次性传递所有参数,为数据进行初始化。
setter 不仅可以用于设置数据,可以用于修改数据。
1、类定义
2、属性
3、构造方法
4、普通方法
匿名对象
构造方法与类的名称一样
public Person(){
System。}
出现new语句的时候才出现构造方法
属性是在开辟堆内存的时候形成的
public void Person()命名不标准 就是普通方法
与public Person() 构造方法
不能用void 来定义构造方法
有参构造在无参执行的时候会报错
构造方法的调用可以一次性传递所有参数,为数据进行初始化。
setter 不仅可以用于设置数据,可以用于修改数据。
1、类定义
2、属性
3、构造方法
4、普通方法
匿名对象
程序是按照结构的偏差归类,而不是根据方法名来定义
1.构造方法的规则:方法名称必须与类名称相同,且该方法没有返回值类型声明。每个类中必须有一个或多个构造方法。
2.(1)属性是在对象开辟堆内存的时候就开辟的空间
(2)构造方法是在使用关键字new的时候被调用并且只能调用一次。
(3)普通方法在对象已经实例化完成后通过规则进行调用的,可调用多次。
3.(1)构造方法的调用和对象内存分配几乎同步完成。同时,构造方法可以对属性进行初始化。
(2)通过构造方法设置内容,可以避免重复调用setter方法。
注:在实际开发中,setter方法除了可以设置内容,还可以用来修改内容。
构造方法与匿名对象
在之前讲解了实例化对象的产生格式:
//在类中定义构造函数
class Person10{//定义一个类,类名称要求首字母大写
private String name = "wangkai";
private int age = 23;
public Person10() {//构造函数,与类名称同名,并且构造方法没有返回值类型声明
System.out.println("***********");
}
public void setName(String n) {
name = n;
}
public void setAge(int a) {
if(a > 0 && a < 150) {
age = a;
}else {
age = 0;
}
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void info() {
System.out.println("name = "+ name + ",age = " + age);
}
}
public class Class10{
public static void main(String args[]) {
//类名称 对象名称 = new 类名称();
Person10 per1 = new Person10();//声明一个新的对象
per1.setName("wangkai");
per1.setAge(160);
per1.info();
}
}
疑问:既然构造方法中没有返回数据,为什么不使用void定义呢?
现在的类中的组成:属性,普通方法,构造方法。
class Person{
public Person(){//这是一个构造方法,结构与普通方法截然不同,无返回值声明;
}
}
class Person(){
public void Person(){//这是一个普通方法,虽然命名不标准;
}
}
//在类中定义一个有参数的构造函数
class Person11{//定义一个类,类名称要求首字母大写
private String name = "wangkai";
private int age = 23;
public Person11(String n,int a) {//构造函数,与类名称同名,并且构造方法没有返回值类型声明
name = n;//setName(n)
setAge(a);
}
public void setName(String n) {
name = n;
}
public void setAge(int a) {
if(a > 0 && a < 150) {
age = a;
}else {
age = 0;
}
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void info() {
System.out.println("name = "+ name + ",age = " + age);
}
}
public class Class11{
public static void main(String args[]) {
//类名称 对象名称 = new 类名称();
Person11 per1 = new Person11("wangkai",30);//声明一个新的对象
per1.info();
}
}
构造方法的作用:
1. 构造方法的调用和对象内存分配几乎是同步完成的,所以可以利用构造方法设置类中的属性内容,构造方法可以为类中的属性进行初始化处理;
2. 通过构造方法设置内容实际上就可以避免重复的setter调用了。
//构造函数重载
class Person12{//定义一个类,类名称要求首字母大写
private String name;
private int age;
public Person12() {
}
public Person12(String n) {
name = n;
}
public Person12(String n,int a) {//构造函数,与类名称同名,并且构造方法没有返回值类型声明
name = n;//setName(n)
setAge(a);
}
public void setName(String n) {
name = n;
}
public void setAge(int a) {
if(a > 0 && a < 150) {
age = a;
}else {
age = 0;
}
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void info() {
System.out.println("name = "+ name + ",age = " + age);
}
}
public class Class12{
public static void main(String args[]) {
//类名称 对象名称 = new 类名称();
Person12 per1 = new Person12("wangkai");//声明一个新的对象
per1.setAge(23);
per1.info();
}
}
在进行构造方法重载的时候请注意以下定义结构。建议若干个构造方法按照参数的个数采用升序或降序排列。
同时也需要注意一点:在进行类定义的时候,请按照如下顺序完成:
//匿名对象
class Person13{//定义一个类,类名称要求首字母大写
private String name;
private int age;
public Person13(String n,int a) {//构造函数,与类名称同名,并且构造方法没有返回值类型声明
name = n;//setName(n)
setAge(a);
}
public void setName(String n) {
name = n;
}
public void setAge(int a) {
if(a > 0 && a < 150) {
age = a;
}else {
age = 0;
}
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void info() {
System.out.println("name = "+ name + ",age = " + age);
}
}
public class Class13{
public static void main(String args[]) {
//类名称 对象名称 = new 类名称();
new Person13("wangkai",23).info();//匿名对象
}
}
因为匿名对象不会有任何的栈空间所指向,所以使用一次之后就将成为垃圾。
你现在是否使用匿名对象没有绝对定论,你一切都可以使用有名对象。
实例化对象的产生格式:
类名称 对象名称 = new 类名称();
对于以上的格式观察组成部分:
所以通过以上分析可以清楚,所谓的构造方法指的就是在使用关键字new实例化新对象的时候来进行调用的操作方法,但是对于构造方法定义也需要遵守如下原则:方法名称必须与类名称相同,并且构造方法没有返回值类型声明,同时每一个类中一定会至少存在一个构造方法,如果类中没有一个构造方法,那么将自动生成一个无参的,什么都不做的构造方法。
类的组成:属性、普通方法、构造方法。
属性是在对象开辟堆内存的时候就开辟的空间;
构造方法是在使用关键字new的同时调用的;
普通方法是在对象实例化完成了(空间开辟了,构造方法执行了)再调用的,可以调用多次;
构造方法的作用:
构造方法的调用和兑现内存分配几乎是同步完成的,所以可以利用构造方法设置类中的属性内容,构造方法可以为类中的属性进行初始化处理;
通过构造方法设置内容实际上就可以避免重复的setter调用了。
在实际开发之中,setter方法除了具备有设置内容制外,还可以承担修改数据的操作。
既然构造方法本身属于方法,那么方法就一定可以进行重载,而构造方法的重载更加简单,因为方法名称就是类名称,所以可以做的只是实现参数的类型或个数不同这一概念。
在进行类定义的时候,注意以下:
由于匿名对象不会有任何的栈空间所指向,所以使用一次之后就将成为垃圾。
构造方法每个类中至少存在一个;
构造方法的名称与类名称相同,无返回值类型定义;
构造方法允许重载,重载时只需要考虑方法的参数类型或个数即可;
区别变量和方法的最简单方法是看有没有()
属性是在对象开辟堆内存空间的时候生成的
构造方法是在使用关键字new的时候同时调用的(只调用一次)
普通方法是在对象已经实例化完成了再调用的(可调用多次)
定义一个有参构造,则默认的无参构造将不会在编译时自动生成
构造方法的调用和对象内存分配几乎是同步完成的,构造方法可以对属性进行初始化处理
通过构造方法设置内容实际上就可以避免重复的setter操作
匿名对象:new Person("张三",30)info();
由于匿名对象不会有任何的栈空间所指向,所以使用一次后将成为垃圾
类组成:属性、构造方法、普通方法。
类编写的时候,第一部分写属性;第二部分写构造方法、第三部分写普通方法。
实例化对象的产生格式:
类名称 对象名称 = new 类名称();
构造方法就是在使用关键字new时所调调用的方法。
默认的无参构造方法;
public Person();
构造方法:
构造方法可以为类中的属性进行初始化;
构造方法与类名称相同,且没有注明返回值类型
构造方法允许重载,重载时只需要考虑参数的类型和个数
new 类名称();
类名称(); 就是构造方法
默认的构造方法(类中没有定义构造方法时)是:无参的,什么都不做的构造方法。
类构成:属性(开辟控件时有的),普通方法,构造方法(实例化对象时)。
构造方法:构造方法为类的属性初始化处理。
setter函数不仅能设置属性,还可以修改属性值
构造方法重载,注意结构顺序。。。。如参数个数升序/降序
类定义是一般遵循:
第一部分写属性,
第二部分写构造方法
第三部分写普通方法
匿名对象:::匿名对象没有栈空间
new 类对象(参数1 ,参数2,...)