Java重写和重载

父类

package copa.test;

public class Animal {
	private String name;
	private int age;

	public Animal(String myName, int myAge) {
		name = myName;
		age = myAge;
		System.out.println("Animal-- 进来了");
	}

	public void eat() {
		System.out.println(name + "Animal-- 能吃");
	}

	public void sleep() {
		System.out.println(name + "Animal-- 能睡");
	}

	public void introduction() {
		System.out.println("Animal-- 大家好!我是" + name + ",今年" + age + "岁");
	}
}


子类

package copa.test;

public class Dog extends Animal {

	/**
	 * 重写--在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法;
	 * 参数列表: 一定不能修改; 
	 * 返回类型: 一定不能修改; 
	 * 异常: 可以减少或删除,一定不能抛出新的或者更广的异常;
	 * 访问(private、public等等): 一定不能做更严格的限制(可以降低限制)
	 */

	// 重写
	public void eat() {
		System.out.println("Dog : eat");
	}

	/**
	 * 重载--一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同; 
	 * 参数列表: 必须修改; 
	 * 返回类型: 可以修改; 
	 * 异常: 可以修改; 
	 * 访问(private、public等等): 可以修改
	 */
	// 重载
	private void eat(String food) {
		System.out.println("Dog在吃" + food);
	}

	// 重载
	public int eat(int count) {
		System.out.println("Dog吃了" + count + "顿饭");
		return count;
	}

	// 重载
	public int eat(String food, int count) {
		System.out.println("Dog吃了" + count + "个" + food);
		return count;
	}

	// 重载
	public int eat(int count, String food) {
		System.out.println(count + "个" + food + "被Dog吃了");
		return count;
	}

	public Dog(String myName, int myid) {
		super(myName, myid);
		// TODO Auto-generated constructor stub
		/*
		*当子类对象调用重写的方法时,调用的是子类的方法,而不是父类中被重写的方法
		*要想调用父类中被重写的方法,则必须使用关键字 super。
		*/
		super.eat();
		this.eat();
		this.eat("面包");
	}

	public static void main(String[] args) {
		String myName = "huahua--";
		int myid = 1;
		Dog dog = new Dog(myName, myid);
		dog.introduction();
		System.out.println("=======这里子类重写了父类,输出:Dog : eat");
		// 这里子类重写了父类,输出:Dog : eat
		dog.eat();
		System.out.println("=======调用重载方法");
		// 调用重载方法
		dog.eat("馒头+咸菜");
		dog.eat(1);
		dog.eat("馒头", 3);
		dog.eat(3, "馒头");
		dog.sleep();

		/*
		 * 父类引用指向子类对象 当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。
		 * 多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。
		 * 方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现
		 */
		Animal animal = new Dog(myName, myid);
		System.out.println("=======父类引用指向子类对象");
		animal.eat();

	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值