java语言:方法重载&方法重写&继承

构造器

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



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值