Java基础 4.17

1.作用域

基本作用

面向对象中,变量作用域是非常重要的知识点,相对来说不是特别好理解,认真思考,深刻掌握变量作用域

  • 在Java编程中,主要的变量就是属性(成员变量)和局部变量
  • 局部变量一般是指在成员方法中定义的变量

Java中作用域的分类

  • 全局变量:也就是属性,作用域为整个类体
  • 局部变量:也就是除了属性之外的其他变量,作用域为定义它的代码块中
  • 全局变量(属性)可以不赋值,直接使用,因为有默认值,局部变量必须赋值后才能使用,因为没有默认值

注意事项和使用细节

  • 属性和局部变量可以重名,访问时遵循就近原则
  • 在同一个作用域中,比如在同一个成员方法中,两个局部变量不能重名
  • 属性生命周期长,伴随着对象的创建而创建,伴随着对象的销毁而销毁。局部变量生命周期较短,伴随着它的代码块的执行而创建,伴随着代码块的结束而销毁。即在一次方法调用过程中。
  • 作用域范围不同 全局变量/属性:可以被本类使用,或其他类使用(通过对象调用) 局部变量:只能在本类中对应的方法中使用
  • 修饰符不同 全局变量/属性可以加修饰符 局部变量不可以加修饰符 

2.构造器/构造方法

需求

前面创建人类的对象时,是先把一个对象创建好后,再给他的年龄和姓名属性赋值,如果现在我要求,在构建人类对象时,就直接指定这个对象的年龄和姓名,该怎么做?这时就可以使用构造器 

基本语法

[修饰符] 方法名(形参列表) {
         方法体;
}

说明

  • 构造器的修饰符可以默认,也可以是public protected private
  • 构造器没有返回值,也不能写void
  • 方法名和类名必须一致
  • 参数列表和成员方法一样的规则
  • 构造器的调用由系统完成

基本介绍

构造方法又叫构造器,是类的一种特殊方法,它的主要作用是完成对新对象的初始化。它有几个特点:

  • 方法名和类名相同
  • 没有返回值,也不能写void
  • 在创建对象时,系统会自动调用该类的构造器完成对象的初始化 

快速入门

public class Constructor01 {
	public static void main(String[] args) {
		Person p = new Person("logic", 20);
		System.out.println(p.name);
	}
}

class Person {
	String name;
	int age;

	public Person(String pName, int pAge) {
		System.out.println("构造器被调用~~");
		name = pName;
		age = pAge;
	}
}

注意事项和使用细节

  • 一个类可以定义多个不同的构造器,即构造器重载
  • 构造器和类名要相同
  • 构造器没有返回值
  • 构造器是完成对象的初始化,并不是创建对象
  • 在创建对象时,系统自动的调用该类的构造方法 无需自己调用
  • 如果程序员没有定义构造器,系统就会自动给类生成一个默认无参构造器(也叫默认构造器),比如Dog(){},使用javap指令 反编译看看
  • 一旦定义了自己的构造器,默认的构造器就覆盖了,就不能再使用默认的无参构造器,除非显式的定义一下,即:Dog(){} (这点很重要)
class Dog {
	Dog() {
		
	}
}

 

class Dog {
	String name;
	public Dog(String dName) {

	}
}

 

自动把默认构造器给覆盖了 

构造器的练习

public class Constructor01 {
	public static void main(String[] args) {
		Person p = new Person();
		System.out.println(p.name + " " + p.age);
		Person p2 = new Person("logic", 20);
		System.out.println(p2.name + " " + p2.age);
	}
}

class Person {
	int age;
	String name;
	//第一个无参构造器 利用构造器设置所有人的age属性初始化值为18
	public Person() {
		System.out.println("调用默认!");
		age = 18;
	}

	//第二个带pName和pAge两个参数的构造器:使得每次创建Person对象的同时
	//初始化对象的age属性值和name属性值。
	public Person(String pName, int pAge) {
		System.out.println("调用初始!");
		name = pName;
		age = pAge;
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值