构造器
java语言中 构造器(即:构造方法)是一种特殊的方法,这个特殊的方法用于创建实例时执行初始化
构造器是创建对象的重要途径,因此,一个java类中至少需要一个货一个以上的构造器
例如:
public class Test
{
//定义两个成员变量
String name;
int age;
//创建一个自定义的构造器
//构造器的方法名与类名保持一致
public Test(String name,int age)
{
this.name=name;
this.age=age;
}
public static void main(String[] args)
{
Test test=new Test("小李",12);
System.out.println(test.name+"-"+test.age);
}
}
构造器重载(方法重载)
同一个类中含有多个构造器,且多个构造器的形式参数不同,即被称为构造器重构(方法重构)
方法重载的条件:
如果java类中有两个构造器的方法名相同,但参数不一致,哪么可以说一个方法是另一个方法的重载
1.方法名相同
2.方法的参数类型、个数、顺序至少有一项不同
3.方法的返回类型可以不相同
4.方法的修饰符可以不相同
例如:
public class Test
{
//定义两个成员变量
String name;
int age;
String sex;
//无参数的构造器
public Test()
{
}
//两个参数的构造器
public Test(String name,int age)
{
this.name=name;
this.age=age;
}
//参数数量相同,顺序不同也属于方法重载
public Test(int age,String name)
{
this.age=age;
this.name=name;
}
//下面这个构造器就不属于方法重载了
//参数类型相同依然不能构成方法重载
public Test(String sex,int number)
{
}
//三个参数的构造器
public Test(String name,int age,String sex)
{
// this.name=name;
// this.age=age;
//因为此构造器中中的两个构造参数与Test(String name,int age)相同
//可以使用this关键字来实现Test(String name,int age)构造器的调用
this(name,age);
this.sex=sex;
}
public static void main(String[] args)
{
Test test=new Test(12,"xiaoli");
System.out.println(test.name+"-"+test.age);
}
}
继承
继承是面向对象的三大基本特征之一。java继承具有单继承的特点,每个子类只可以有一个直接的父类,但可以有多个间接的父类java语言中通过extends关键字来实现子类继承父类
例如
父类
public class Fruits
{
//定义一个父类方法
public void info(){
System.out.println("我是水果");
}
}
子类
//定义一个Apple类使他继承Fruits,关键字extends
public class Apple extends Fruits
{
public static void main(String[] args)
{
//Apple类中并没有使用打印输出语句,但是由于Apple继承于Fruits
//父类的info()方法中有输出语句
Apple a=new Apple();
a.info();
}
}
方法重写(override)
当子类不满足于父类所继承来的某个方法时可以通过override来将父类继承的方法覆盖
注:如果父类方法是private访问权限,则方法对子类是隐藏的,子类无法访问该方法,也无法重写该方法
方法重写的条件
如果在子类中定义一个方法,其名称、返回类型及参数签名正好与父类中某个方法的名称、返回类型及参数签名相匹配,那么可以说,子类的方法覆盖了父类的方法。
例
public class Fruits
{
//定义一个父类方法
public void info(){
System.out.println("我是水果");
}
}
//定义一个Apple类使他继承Fruits,关键字extends
public class Apple extends Fruits
{
//将父类继承来的info()方法重写
//重写后的info()方法就是子类本身的方法,与父类将没有任何联系
public void info(){
System.out.println("我是红苹果");
}
public static void main(String[] args)
{
Apple a=new Apple();
a.info();
}
}
方法重载和方法重写的区别
答:方法重载和方法重写本身无法进行比较
1.方法重载存在于同一个类中,多个同名不同参数的方法间
2.方法重写存在于子类和父类之间的同名方法中
两者的共同之处在于都发生在同名方法之间
补充:
父类和子类之间也可以存在方法重构,当子类继承父类的一个方法时,
再另外定义一个与该父类方法同名不同参数的方法时,就会形成方法重载
推荐一篇java继承,方法重载,方法重写的总结:http://blog.csdn.net/cdsnmdl/article/details/3968688