【名师课堂】Java面向对象开发

【名师课堂】Java面向对象开发

Java核心第二部
106课时 |
23947人已学 |
(24 评论)

加入学习
加入学习

构造方法与类的名称一样

public Person(){

System。}

出现new语句的时候才出现构造方法

属性是在开辟堆内存的时候形成的

public void Person()命名不标准 就是普通方法

与public Person() 构造方法

不能用void 来定义构造方法

 

有参构造在无参执行的时候会报错 

构造方法的调用可以一次性传递所有参数,为数据进行初始化。

setter 不仅可以用于设置数据,可以用于修改数据。  

1、类定义

2、属性

3、构造方法

4、普通方法

匿名对象 

[展开全文]
沸腾的硫酸 · 2018-06-13 · 构造方法与匿名对象 0

程序是按照结构的偏差归类,而不是根据方法名来定义 

 

[展开全文]
攀登小虾米 · 2018-05-22 · 构造方法与匿名对象 0

  1.构造方法的规则:方法名称必须与类名称相同,且该方法没有返回值类型声明。每个类中必须有一个或多个构造方法。 

 2.(1)属性是在对象开辟堆内存的时候就开辟的空间

   (2)构造方法是在使用关键字new的时候被调用并且只能调用一次。

   (3)普通方法在对象已经实例化完成后通过规则进行调用的,可调用多次。

  3.(1)构造方法的调用和对象内存分配几乎同步完成。同时,构造方法可以对属性进行初始化。 

   (2)通过构造方法设置内容,可以避免重复调用setter方法。 

      注:在实际开发中,setter方法除了可以设置内容,还可以用来修改内容。

[展开全文]
hudage · 2018-04-30 · 构造方法与匿名对象 0

构造方法与匿名对象

在之前讲解了实例化对象的产生格式:

  • ①类名称 ②对象名称 = ③new ④类名称();
对于以上的格式观察组成部分:
  • ①类名称:任何的对象都应该有其对应的类,因为没有类就不知道对象具备的功能;
  • ②对象名称:是一个唯一的标记,表示的是以后的操作的属性的标记;
  •  ③new:表示开辟新的堆内存空间;
  • ④类名称():构造方法。
通过以上的分析就应该已经清楚了,所谓的构造方法指的就是在使用关键字new实例化新对象的时候来调用的操作方法,但是对于构造方法定义也需要遵守如下原则:方法名称必须与类名称相同,并且构造方法没有返回值类型声明,同时每一个类中一定会至少存在有一个构造方法,如果类中没有明确的定义任何一个构造方法,那么将自动生成一个无参的,什么都不做的构造方法。
 
范例:定义一个无参的什么都不做的构造方法
 
//在类中定义构造函数
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定义呢?

现在的类中的组成:属性,普通方法,构造方法。

  • 属性是在对象开辟堆内存的时候就开辟的空间。
  • 构造方法是在使用关键字new同时调用的;
  • 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调用了。

  • 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();//匿名对象
	}
}

因为匿名对象不会有任何的栈空间所指向,所以使用一次之后就将成为垃圾。

你现在是否使用匿名对象没有绝对定论,你一切都可以使用有名对象。

 

  1. 构造方法每个类中至少存在一个;
  2. 构造方法的名称与类名称相同,无返回值类型定义你;
  3. 构造方法允许重载,重载时只需要考虑方法的参数类型或个数即可。
[展开全文]
里程碑 · 2017-12-24 · 构造方法与匿名对象 0

实例化对象的产生格式:

类名称 对象名称 = new 类名称();

对于以上的格式观察组成部分:

  1. 类名称:任何的对象都应该有对应的类,因为没有类就不知道对象具备的功能;
  2. 对象名称:是一个唯一的标记,表示的是以后操作的属性的标记;
  3. new:表示开辟新的堆内存空间;
  4. 类名称():构造方法。

所以通过以上分析可以清楚,所谓的构造方法指的就是在使用关键字new实例化新对象的时候来进行调用的操作方法,但是对于构造方法定义也需要遵守如下原则:方法名称必须与类名称相同,并且构造方法没有返回值类型声明,同时每一个类中一定会至少存在一个构造方法,如果类中没有一个构造方法,那么将自动生成一个无参的,什么都不做的构造方法。

类的组成:属性、普通方法、构造方法。

属性是在对象开辟堆内存的时候就开辟的空间;

构造方法是在使用关键字new的同时调用的;

普通方法是在对象实例化完成了(空间开辟了,构造方法执行了)再调用的,可以调用多次;

构造方法的作用:

构造方法的调用和兑现内存分配几乎是同步完成的,所以可以利用构造方法设置类中的属性内容,构造方法可以为类中的属性进行初始化处理;

通过构造方法设置内容实际上就可以避免重复的setter调用了。

在实际开发之中,setter方法除了具备有设置内容制外,还可以承担修改数据的操作。

既然构造方法本身属于方法,那么方法就一定可以进行重载,而构造方法的重载更加简单,因为方法名称就是类名称,所以可以做的只是实现参数的类型或个数不同这一概念。

在进行类定义的时候,注意以下:

  • 第一部分写属性;
  • 第二部分写构造方法;
  • 第三部分些普通方法;

由于匿名对象不会有任何的栈空间所指向,所以使用一次之后就将成为垃圾。

构造方法每个类中至少存在一个;

构造方法的名称与类名称相同,无返回值类型定义;

构造方法允许重载,重载时只需要考虑方法的参数类型或个数即可;

[展开全文]
时光如流沙 · 2017-12-13 · 构造方法与匿名对象 0

区别变量和方法的最简单方法是看有没有()

属性是在对象开辟堆内存空间的时候生成的

构造方法是在使用关键字new的时候同时调用的(只调用一次)

普通方法是在对象已经实例化完成了再调用的(可调用多次)

定义一个有参构造,则默认的无参构造将不会在编译时自动生成

构造方法的调用和对象内存分配几乎是同步完成的,构造方法可以对属性进行初始化处理

通过构造方法设置内容实际上就可以避免重复的setter操作

匿名对象:new Person("张三",30)info();

由于匿名对象不会有任何的栈空间所指向,所以使用一次后将成为垃圾

 

[展开全文]
errymouse · 2017-10-27 · 构造方法与匿名对象 0

类组成:属性、构造方法、普通方法。

类编写的时候,第一部分写属性;第二部分写构造方法、第三部分写普通方法。

 

实例化对象的产生格式:

类名称 对象名称 = new 类名称();

  1. 类名称:任何的对象都应该有对应的类
  2. 对象名称:是一个唯一的标记;
  3. new:开辟堆内存;
  4. 类名称();构造方法。

构造方法就是在使用关键字new时所调调用的方法。

默认的无参构造方法;

public Person();

构造方法:

  1. 构造方法每个类中至少存在有一个;
  2. 构造方法的名称与类名称相同,无返回值类型定义;
  3. 构造方法允许重载,重载时只需考虑方法的参数类型或个数即可。

构造方法可以为类中的属性进行初始化;

 

[展开全文]
终结命运 · 2017-06-29 · 构造方法与匿名对象 0

构造方法与类名称相同,且没有注明返回值类型

 

构造方法允许重载,重载时只需要考虑参数的类型和个数

 

new 类名称();

类名称();   就是构造方法

 默认的构造方法(类中没有定义构造方法时)是:无参的,什么都不做的构造方法。

 

类构成:属性(开辟控件时有的),普通方法,构造方法(实例化对象时)。

构造方法:构造方法为类的属性初始化处理。

 

setter函数不仅能设置属性,还可以修改属性值

 

构造方法重载,注意结构顺序。。。。如参数个数升序/降序

类定义是一般遵循:

第一部分写属性,

第二部分写构造方法

第三部分写普通方法

 

 

匿名对象:::匿名对象没有栈空间

new 类对象(参数1 ,参数2,...)

 

 

 

[展开全文]
六四零 · 2017-06-11 · 构造方法与匿名对象 0

授课教师

阿里云开发者社区全面升级
一站式体验,助力云上开发!
进入新社区

相关课程

查看更多 >

本课程相关云产品