1、重载
重载(Overload) 是在一个类里面,方法名字相同,而参数列表不同。返回类型可以相同也可以不同。
每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。注意和重写进行区分,重写强调父类和子类之间同名方法,而重载一个类中存在同名方法。最常用的地方就是构造器的重载。
2、重载和重写的区别
- 方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载(Overloading)。
- 方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型必须一样,返回值也一样的方法,就称为重写(Overriding)。
- 方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。
- 重载可修改访问权限,重写只能降低限制,不能做更严格的限制。
2、构造方法的重载
构造方法:
在Java中,任何变量在被使用前都必须先设置初值。Java提供了为类的成员变量的专门方法。
类构造方法中,第一行默认是super()
目的:
(1)构造出来一个类的实例(new的时候就会调用这方法);
(2)对构造出来个一个类的实例(对象)初始化。
-
构造方法示例
User.class
public class User {
private String name ;
private String password ;
private int age;
private boolean man;
public User(String name, String password, int age, boolean man) {
super();
this.name = name;
this.password = password;
this.age = age;
this.man = man;
}
public User(String name, String password) {
super();
this.name = name;
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean isMan() { //不是get方法,换名了
return man;
}
public void setMan(boolean man) {
this.man = man;
}
}
注意:boolean类型的值没有get方法,是is方法(就是换了个名字,功能一样)
Test_OverLoad.class
public class Test_OverLoad {
public static void main(String[] args) {
User u1 = new User( "老徐","123456"); //调用构造方法进行初始化
System.out.println("用户名:"+u1.getName());
System.out.println("密码:"+u1.getPassword());
System.out.println("*********");
User u2 = new User( "老徐","123456",18,true); //调用构造方法进行初始化
System.out.println("用户名:"+u2.getName());
System.out.println("密码:"+u2.getPassword());
System.out.println(u2.getName()+"永远"+u2.getAge()+"岁");
if(u2.isMan()) {
System.out.println(u2.getName()+"是男娃");
}else {
System.out.println(u2.getName()+"是女娃");
}
}
}
结果图
image.png
3、普通成员方法的重载
栗子:add方法的重载
目的:根据传入参数列表的不同,进行不同的操作,并返回不同类型的值。
public class Test_OverLoad2 {
public int add(int a,int b) {
return a+b;
}
public int add(int a,int b,int c) {
return a+b+c;
}
public double add(double a,double b) {
return a+b;
}
public String add(String a,String b) {
return a+b;
}
public static void main(String[] args) {
Test_OverLoad2 t = new Test_OverLoad2();
System.out.println(t.add(1, 1));
System.out.println(t.add(0.1, 0.3));
System.out.println(t.add(1, 3, 8));
System.out.println(t.add("hello ","world!"));
}
}
结果图:
image.png
网友评论