方法的重载:
1. 方法重载的目的:为了让方法名相同而形参不同的构造方法同时存在,必须用到“方法重载”。
2. 方法重载的判断条件:参数个数不同或参数类型不同。返回值不是判断条件。
构造方法:
1. 方法名称与类名相同。
2. 无返回值,不用void修饰。
重载与重写的区别:
参数列表 返回类型 访问限制 调用
重载方法 必须修改 可以任意修改 可以修改 参数类型决定
重写方法 一定不能改 对于基本数据类型必须相同, 一定不能做更严格的限制, 对象类型决定
对于对象引用类型必须能够兼容。 但可以降低访问限制
本质区别:重载不是面向对象的,只是高级语言为了使用方便而提供的特性,而重写是完全属于面向对象的。
实例分析:
//方法的重载:参数类型,个数不同.返回值不能作为判断条件
public class Test1{
public static void main(String args[])
{
Test1 a=new Test1();
a.kk();
a.kk(5);
}
void kk()
{
System.out.println("void kk1");
}
void kk(int i)
{
System.out.println("void kk2");
}
int kk(int x,double y)
{
System.out.println("void kk3");
return 5;
}
int kk(int x,int y)
{
System.out.println("void kk4");
return 3;
}
int kk(double x,int y)
{
System.out.println("void kk5");
return 3;
}
//构造方法的使用,构造器,一旦自己写了构造器,系统就不再用默认构造器。
public class Test1{
int sage;
String sname;
int sclass;
public Test1()//创建对象时调用,不准写返回值类型(void 也不行),名称必须跟类名相同
{
System.out.println("Test1");
}
public Test1(int sage)
{
this.sage=sage;//this代表类中的全局变量sage
System.out.println("name:"+sname+" class:"+sclass+" sage:"+sage);
}
public Test1(int sage,String sname)
{
this(sage);//this 代表上一个单参数构造器
this.sname=sname;
System.out.println("name:"+sname+" class:"+sclass+" sage:"+sage);
}
public Test1(String sname,int sage,int sclass)
{
this(sage,sname);//this代表上一个双参数的构造器
this.sclass=sclass;
System.out.println("name:"+sname+" class:"+sclass+" sage:"+sage);
}
public static void main(String args[])
{
// Test1 st=new Test1();
// Test1 st2=new Test1();
// new Test1(22);
Test1 st3=new Test1(20);
Test1 st4=new Test1(22,"yangzhanghui");
Test1 st5=new Test1("Yangzhanghui",22,1);
}
}