Java 面向对象:重载overload、静态static、构造器初始化变量

本文详细介绍了Java中方法重载的概念与规则,并通过具体示例解释了如何实现方法重载。此外,还深入探讨了静态变量、静态方法及静态代码块的特点与应用场景。
package com.neusoft.overload;
/**
 * 方法的重载(overload):函数的重载就是在同一个类中允许同时存在一个以上同名的方法
 * 1.成员方法(类中的方法):判断
 * 2.特殊的方法(构造方法):初始化
 * 方法重载的规则:
 * 1.函数名称相同
 * 2.函数的参数必须不同:可以参数个数不同,也可以参数类型不同
 * 3.函数的返回值类型,可以相同也可以不同,与返回值类型无关
 */
public class Test {
	public void m1(){
		
	}
	public void m1(int a){
		
	}
	public static void main(String[] args) {
		Test test = new Test();
		test.m1(1);
		System.out.println(1);
	}
}
package com.neusoft.override;

import com.neusoft.overload.StaticDemo;

public class Test_This {
	public Test_This(){
		System.out.println("1");
	}

	public Test_This(int a){
		this();
		System.out.println("2");
	}

	public Test_This(int a, int b){
		this(a);
		System.out.println("3");
	}
	public static void main(String[] args){
		Test_This a = new Test_This(4,6);//1 2 3
	}
}
package com.neusoft.overload;
public class Person {
	private String name;
	private int age;
	private String school;
	public Person(){
		
	}
	public Person(String name,int age,String school){
		this.name = name;//初始化
		this.age = age;
		this.school = school;
	}
	public static void main(String[] args) {
		Person person1 = new Person();
		Person person2 = new Person("tom",20,"neusoft");
	}
}
package com.neusoft.overload;

/**
 * static静态 它可以修饰: 
 * 1.静态变量:可以作为累加器,每次创建一个新的对象静态变量不会赋值为初始值。
 * 		          而实例变量每次创建新的对象都会赋为初始值。
 * 		          成员方法里不可以创建静态变量。
 * 		          静态方法里可以直接访问静态变量,不可以直接访问非静态变量。
 * 2.静态方法:类名.method() 
 * 3.静态代码块(作用:可以初始化)不常用 了解
 * 
 * @author Administrator
 *
 */
public class StaticDemo {
	static int i; //成员变量统领全类
	int b;
	public StaticDemo() {//静态方法不可以放在构造方法里
		i++;//静态方法里可以直接访问静态变量
		System.out.println(i);
	}
	
	public static void t(){
//		b = 2;//静态方法里不可以直接访问非静态变量
	}

	public static void t1() {
		System.out.println("t1");
	}

	public static void t2(){
//		Static int a; // 成员方法里不可以创建静态变量。
		System.out.println("t2");
	}
	
	public static void main(String[] args) {
		StaticDemo.t1();//静态方法直接调用:作为通用的工具类使用
		StaticDemo sd1 = new StaticDemo();
		StaticDemo sd2 = new StaticDemo();
		StaticDemo sd3 = new StaticDemo();
		StaticDemo sd4 = new StaticDemo();
		sd1.t1();//创建对象调用
		

	}
}
Java 中,类的构造与初始化是非常重要的部分,它涉及到对象如何被创建以及变量如何获得初始值的过程。下面从几个方面详细介绍这个主题。 ### 类构造函数 **1. 构造方法的作用及特点** - 每当新建一个实例时都会自动调用相应的构造方法来完成属性赋初值等工作。 - 它的名字必须同所在的那个class名称完全一致,并且没有任何返回类型的声明(包括void)。 例子: ```java public class Car { private String brand; // 无参构造器 public Car() { this.brand = "Unknown"; } } ``` **2. 重载的概念** 就像普通method一样,constructor也可以overload以适应多种情况下的需求。例如对于Car object我们可能需要依据不同参数组合分别制定出多样化的车辆信息配置方案。 如上述基础上添加另一个带两个参数的品牌和颜色版本: ```java // 双参数构造器 public Car(String brand, String color){ super(); // 调用父级Object Class里的no-args Constructor if necessary. setBrand(brand); } ``` --- ### 成员变量初始化 成员字段可以在其声明的同时赋予固定数值或者是借助于某些表达式计算出来的动态结果作为默认状态值;另外还有一种做法就是在每一个Constructor内部逐一明确指出各项property的具体取舍范围或预设情形。 示例代码展示如下: ```java private int wheelCount=4; // 直接给予确定整数型常量4代表标准汽车轮胎数目 double price=-1.0d; // 初始化为负数表示尚未定价的状态 Date manufacturedDate=new Date(System.currentTimeMillis()); // 设置生产日期等于此刻时刻点对应的calendar entry record. // 或者通过 constructor 来传递并保存下来外部提供的实际业务逻辑相关的资料内容。 public Product(double p,String mfgDte){...}; ``` --- ### 静态块 vs 实例块 除了常规意义上的constructors之外,在Java里还有两种特殊的initialization blocks可用于满足特殊场景的需求: 1. **Static Initialization Blocks**: 执行一次而且仅此而已无论有多少个object instances were created from the same template definition file。一般用于执行那些跟整个类别有关而非个别物件专属的任务比如加载驱动程序、验证环境设置等前置条件准备工作。 ```java static{ System.loadLibrary("mylib"); // 加载本地库文件“mylib” if(!checkEnvironment()) throw new RuntimeException("Invalid env!"); } ``` 2. **Instance Initializer Block**: 每次new出新实体时候均会被触发一遍以此达到某种特定目的诸如额外的安全性检测或是复杂的多重继承结构处理兼容工作等方面考虑因素较多的应用场合下显得尤为有用之处体现得淋漓尽致了呢! ```java {// Instance initializer block String uniqueID=generateUUID(); setIdentityTag(uniqueID); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值