黑马程序员_java面向对象_构造函数

------- android培训java培训、期待与您交流! ----------

构造函数

构造函数:构建创造对象时调用的函数

特点:

 函数名与类名相同

不用定义返回值类型

没有具体的返回值

作用:

      给对象进行初始化

注意:默认构造函数的特点,多个构造函数是以重载的形式存在的

当一个类中没有定义构造函数时,那么系统会默认给该类加入一个空参数的构造函数。默认的构造函数的权限和所属类一致。默认构造构造函数的权限是随着的类的变化而变化的。当在类中自定义了构造函数后,默认的构造函数就没有了。

classPerson {
    //构造函数
    Person() {
        System.out.println("Hi");
    }
}

构造函数和一般函数的区别:

构造函数:对象一建立就会调用与之对应的构造函数。对对象进行初始化;

一般函数:对象创建后,需要该函数功能时调用才执行,为对象添加对象具备的功能。

构造函数:对象创建时,会调用且只调用一次;

一般函数:对象创建后,可以被调用多次

this关键字
特点:this代表其所在函数所属对象的引用。this代表本类对象的
this
代表它所在函数所属对象的引用。
哪个对象在调用this所在的函数,this就代表哪个对象。

this的应用:在定义类中功能时,该函数内部要用到该函数的对象时,
这时用this来表示这个对象。但凡本类功能内部使用了本类对象,都用this表示。

this语句 :用于构造函数之间进行互相调用。
如:this();
this
语句只能定义在构造函数的第一行。因为初始化要先执行。默认都在第一行。

构造函数_重载,代码示例:

package cn.itcast.duixiang;

public class PersonTest {

	public static void main(String[] args) {

		Person p1 = new Person();
		Person p2 = new Person("David");
		p1.print();
		p2.print();
	}
}

class Person {
	private int age = 0;
	private String name;
	Person() {
		age = 1;
		name = "Mike";
	}
	Person(String name) {
		this.name = name;	//this关键字
	}
	public void print () {
		System.out.println(age + "...." + name);
	}
}

static(静态)关键字
static
关键字用于修饰成员(成员变量和成员函数)
被修饰的成员具有以下特点:
随着类的加载而加载
优先于对象存在
被所有对象所共享
可以直接被类名调用。类名.静态成员。

注意:静态方法只能方法静态成员

      静态方法中,不可以写thissuper关键字

      主函数必须是静态的

成员变量(实例变量)和静态变量(类变量)的区别:

1.两个变量的生命周期不同

成员变量随着对象的创建而存在,随着对象的被回收而释放

静态变量随着类的加载而存在,随着类的消失而消失

2.调用方式不同

成员变量只能被对象调用

静态变量可以被对象调用,也可以被类调用

3.存放位置

成员变量数据存在堆内存的对象中,所以也叫对象的特有数据

静态变量数据存在方法区,所以也叫对象的共享数据。

对主函数main的解释:

public class PersonTest {
//	主函数
	public static void main(String[] args) {
	}
}

主函数:是一个特殊的函数。是程序的入口,可以被jvm调用,无返回值。
定义:
public
:代表着该函数访问权限是最大的。
static
:代表主函数随着类的加载而加载。
void
:主函数没有具体的返回值。
main
:不是关键字,但是是一个特殊的单词,可以被虚拟机识别。
(String[] arr)
:函数的参数,参数类型是一个数组,该数组中的元素是字符串。字符串类型的数组。
固定格式。

静态变量:
当分析对象中所具备的成员变量的值都是相同的,这时这个成员就可以被静态修饰。只要数据在对象中都是不同的,就是对象的特有数据,必须存储在对象中,定义成静态的。如果是相同的数据,对象不需要做修改,只需要使用即可,不需要存储在对象中
静态函数:
函数是否用静态修饰,就参考一点,就是该函数功能是否访问到对象中的特有数据。静态函数只能访问静态方法或者静态变量。

代码示例:

public class PersonTest {
	public static void main(String[] args) {
		Person.method();
		Person p1 = new Person("Mike",20);
		p1.sop();
	}
}

class Person {
	private int age = 0;
	private String name;
	static String country = "China";
	Person(String name,int age) {
		this.age = age;
		this.name = name;
	}
	public void sop() {
		System.out.println(Person.country + ":" + this.name + "..." + this.age);
	}
	public static void method () {
		System.out.println(Person.country);
	}
}

静态代码块:

/*
 * 静态代码块
 * 用于给类进行初始化
 */
class StaticCode {
//	代码内容
	static void show(){
		System.out.println("静态代码");
	}
	static{
		System.out.println("静态代码块");
	}
}
class StaticCodeDemo {
	public static void main(String[] args) {
		StaticCode.show();
	}
}
输出内容:

静态代码块
静态代码
特点:随着类的加载而执行,但只执行一次,并优先于主函数和构造代码块。用于给类进行初始化的。



------- android培训java培训、期待与您交流! ----------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值