1.函数的重载与函数的重写
函数重写:字父类出现了同名的函数称作为函数的重写
函数重载:在同一个类中,有一个以上的同名函数,只要函数的参数列表或参数类型不一样即可,与返回值无关, 这些统称为方法的重载。
函数重写必须要是在继承的关系才存在的,而函数的重载不需要。
函数重写的需求:父类的功能无法满足子类的需求时,进行函数重写
函数的重载存在的原因:为了增强方法的阅读性,优化了程序设计
函数重写的要求:
1. 字符类的函数名与形参列表必须一致
2. 子类的权限修饰符必须要大于或者等于符类的权限修饰符,如父类的方法如果是public,那么子类对应重写的方法的权 限修饰符就只能是public或者是default
3. 子类的返回值类型必须要小于或者等于父类的返回值类型
4. 子类抛出的异常值类型必须要小于或等于父类抛出的异常类型
- 对于第三点,如:
class Animal{
}
class Cat extends Animal{
}
class Fu{
public Animal eat(int num) {
System.out.println("父类的eat方法");
return new Animal();
}
}
class Zi extends Fu{
public Cat eat(int num) {
System.out.println("子类的eat方法");
return new Cat();
}
}
此时子类的返回值类型小于父类的返回值类型,程序正常。但是若子类为return new Cat()而父类return new Animal()则会报错。
2.基础排序
- 冒泡排序:相邻的两个元素比较,符合条件交换位置
public static void sort(int[] arr) { //控制轮数,每一轮都将找出一个最大值
for(int j = 0;j<arr.length-1;j++) {
for(int i=0;i<arr.length-1-j;i++) {
//相邻的两个元素比较
if(arr[i]>arr[i+1]) {
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
}
}
- 直接排序:利用当前迭代到的数与其他的数进行比较,每一轮迭代都能找到一个最大或最小值,放在数组最前面
public static void sort2(int[] arr) {
for(int i=0;i<arr.length-1;i++) {
for(int j=i+1;j<arr.length;j++) {
if(arr[i]>arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
- 折半查找:定义三个变量记录最大、最小、中间的查找范围索引值,每次都是使用中间索引值与要查找目标进行对比,如果不符合的目标那么就缩小查找的范围
public static int halfSearch(int[] arr,int target) {
int min = 0;
int max = arr.length-1;
while(max>min) {
int mid = (min+max)/2;
if(target>=arr[mid]) {
min = mid+1;
}else if(target<arr[mid]) {
max = mid-1;
}else{
System.out.println("找到的值索引为:"+mid);
return mid;
}
}
System.out.println("不存在");
return -1;
}