Java基础之练习题

一、重写与重载方法的区别?

重写(override),是子类对父类的允许访问的方法的实现过程进行重新编写,返回值和形式参数都不改变,即外壳不变,核心重写。
好处:子类可以根据需要,定义自己的行为。
子类可以根据需要实现父类的方法,在面向对象原则里,重写可以重写任何现有方法。

1、重写

1、新建Animal.java
package day05;

public class Animal{
	public void move(){
		System.out.println("动物可以移动");
}
}
2、新建Dog.java
package day05;

public class Dog extends Animal{
	public void move(){
		System.out.println("狗可以移动");
}
	public void bark(){
		System.out.println("狗可以吠叫");
}
}
3、新建TestDog.java
package day05;

public class TestDog{
	public static void main(String args[]){
		Animal a = new Animal();
        Animal b = new Dog();
		Dog c = new Dog();

		a.move();
		b.move();

		a.bark();		//报错:因为a的引用类型animal没有bark方法,类型为day05.Animal的变量a找不到方法bark(),使用b.bark();方法也不正确,((Dog) b).bark();才能获取到这个方法。
		
		c.move();
		c.bark();
}
}

输出信息:

方法重写的规则:

  1. 参数列表必须完全与被重写列表相同
  2. 返回类型必须完全与被重写方法的返回类型相同
  3. 子类方法的访问权限必须大于或等于父类方法的访问权限,例如:父类的一个方法被声明为public,那他的子类中重写方法就不能声明为protected。
  4. 父类的成员方法只能被他的子类重写。
  5. 声明为final的方法不能被重写
  6. 声明为static的方法也不能被重写,但是能够被再次声明。
  7. 子类和父类如果在同一个包中,name子类可以重写所有父类方法(除了声明为final和private的方法)
  8. 子类和父类如果不在同一个包中,子类只能重写父类的声明为public和protected的非final方法
  9. 构造方法不能被重写
    10.如果不能继承一个方法,则不能重写这个方法。

2、重载(overlord)

重载(overloading)是在一个类里面,方法名字相同,而参数不同。返回类型呢可以相同也可以不同,每个重载的方法或构造函数都必须有一个独一无二的参数列表。

重载规则:

  • 被重载的方法必须该表参数列表
  • 被重载的方法可以改变返回类型
  • 被重载的方法可以改变访问修饰符
  • 被重载的方法可以声明新的或更广的检查异常
  • 被重载的方法能够在同一个类中或在子类中被重载
package day05;

public class Overloading {

    public int test(){
        System.out.println("test1");
        return 11;
    }
    public void test(int a){
        System.out.println("test2");
    }

    //以下两个参数类型顺序不同
    public String test(int a,String s){
        System.out.println("test3");
        return "returntest3";
    }

    public String test(String s,int a){
        System.out.println("tets4");
        return "returntest4";
    }

    public static void main(String[] args){
        Overloading o = new Overloading();
        System.out.println(o.test());
        o.test(1);
        System.out.println(o.test(1,"john"));
        System.out.println(o.test("sail",1));
    }


}

重写与重载的区别:

区别点重写方法重载方法
参数列表一定不能修改必须被修改
返回类型一定不能修改可以修改
异常可以减少或删除一定不能抛出新的或更广的异常
访问一定不能做更严格的限制(可以降低限制)可以修改

二、equals跟==的区别?

三、Quene中的offer,remove,poll,peak这些方法的使用

四、Collections.sort又是怎么排序的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值