Java SE 面向对象2

1. 构造方法

	new 类名(有可能使用到的参数);
	
	类名(有可能使用到的参数); 这就是构造方法 Constructor
	
	初始化当前创建对象中的成员变量数据!!!
	public 类名(所需初始化参数列表) {
		初始化语句;
	}
细节:
	1. 构造方法的名字必须是类名,并且其他方法的名字不能是类名
	2. 构造方法没有返回值类型声明
	3. 初始化参数列表和正常的方法列表操作使用一致
	4. 初始化语句,大多数是都是一些赋值语句
	
首先
	在Eclipse项目所在文件夹中,bin目录是存放当前Java程序对应的所有的.class 二进制文件(字节码文件),该文件保存了Java文件对应的所有内容
	这里可以通过反编译工具看到一些特定的现象 [了解]
	javap -c -l -private XXX.class

根据需求完成所需构造方法

   public 类名(所需初始化参数列表) {
   	初始化语句;
   }
需求:
   1. 完成对于姓名在创建对像时初始化的构造方法
   2. 完成对于姓名,年龄创建对象时初始化的构造方法
   2. 完成对于姓名,年龄,性别创建对象时初始化的构造方法	
   
注意:
   如果在代码中程序员自行完成了构造方法,Java编译器不再提供自动生成的无参数构造方法。

【强制要求】
   以后代码中无论什么时候都要给用户提供一个无参数构造方法使用

package com.qfedu.a.constructor;

class Dog {
	// 成员变量 Field
	String name;
	int age;
	char gender;
	
	// 无参数构造方法
	public Dog() {}
	
	// 完成对于姓名在创建对像时初始化的构造方法
	public Dog(String n) {
		// 成员变量可以在类内其他中直接使用【80%正确】
		name = n;
	}
	
	// 完成对于姓名,年龄创建对象时初始化的构造方法
	public Dog(String n, int a) {
		name = n;
		age = a;
	}
	
	// 完成对于姓名,年龄,性别创建对象时初始化的构造方法	
	public Dog(String n, int a, char g) {
		name = n;
		age = a;
		gender = g;
	} 
	
	// 成员方法 Method
	public void eat() {
		System.out.println("狗狗吃狗粮");
	}
	
	public void game() {
		System.out.println("狗狗玩球");
	}
	
	public void sleep() {
		System.out.println("狗狗作息非常规律");
	}
}

public class Demo1 {
	public static void main(String[] args) {
		/*
		 *  这里调用的是一个无参数构造构造方法
		 *  但是该方法在Dog类内是没有定义的!!!
		 *  
		 *  以后使用比较多的情况大多数都是无参数构造方法
		 *  
		 *  The constructor Dog() is undefined
		 *  构造方法Dog()未定义
		 */
		// 无参数构造方法
		Dog dog = new Dog();
		System.out.println("Name:" + dog.name);
		System.out.println("Age:" + dog.age);
		System.out.println("Gender:" + dog.gender);
		
		System.out.println("-------------------------------");
		
		Dog dog2 = new Dog("骚杰");
		System.out.println("Name:" + dog2.name);
		System.out.println("Age:" + dog2.age);
		System.out.println("Gender:" + dog2.gender);
		
		System.out.println("-------------------------------");

		Dog dog3 = new Dog("骚杰", 66);
		System.out.println("Name:" + dog3.name);
		System.out.println("Age:" + dog3.age);
		System.out.println("Gender:" + dog3.gender);
		
		System.out.println("-------------------------------");
		
		Dog dog4 = new Dog("测试", 66 , '男');
		System.out.println("Name:" + dog4.name);
		System.out.println("Age:" + dog4.age);
		System.out.println("Gender:" + dog4.gender);
		
		System.out.println("-------------------------------");
	}
}

总结

  1. 构造方法
    功能是用于初始化创建对象的成员变量数据
    构造方法是一个方法,参数使用方式和方法一致

  2. 构造方法选择
    Java编译器会根据构造方法中的【参数类型,个数,顺序】来做选择,如果没有指定的构造方法,报错!!!

  3. 无论什么时候一定要给当前类提供一个无参数构造方法。

  4. 以下代码报错
    Dog(String name);
    Dog(String color);

    调用:
    String color = “red”;
    Dog dog = new Dog(color);
    在Java代码中不允许出现相同数据类型,个数,顺序的构造方法,和参数名没有关系,Java编译器选择过程中,有且只针对数据类型,个数,顺序选择,参数名真的无所谓。

this关键字

this关键字表示对象本身
	1. 调用当前方法的类对象
	2. 通过构造方法创建的类对象

this表示一个对象!!!当前对象!!!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值