子类父类有相同的方法优先调用子类-重写-递归

发布时间 2023-12-14 09:58:11作者: 何人陪我共长生

子类和父类有相同的方法,优先调用子类。如果子类没有,父类。

package studyDemo9yue;
public class study01 {
	public static void main(String[] args) {
		Son s1 = new Son();
		s1.test();
	}
}

class Father{
	void test(){
		System.out.println("我是父类的test");
	}
}

class Son extends Father{
	void test(){
		System.out.println("我是子类的test");
	}
}

输出的是:我是子类的test
因为子类有,所以优先调用子类

子类父类有相同的方法,子类调用父类方法使用super

package studyDemo9yue;
public class study01 {
	public static void main(String[] args) {
		Son s1 = new Son();
		s1.test();
	}
}

class Father{
	void test(){
		System.out.println("我是父类的test");
	}
}

class Son extends Father{
	void test(){
    // 子类调用父类方法使用super
		super.test();
		System.out.println("我是子类的test");
	}
}

输出:
我是父类的test
我是子类的test

重写

父类对象的方法其实主要体现在通用性,无法在特殊的场合下使用;
如果子类对象需要在特殊的场景下使用,那么就需要重写方法的逻辑,这个操作在java中我们称之为方法的重写。

方法重写的要求

方法的重写要求,子类的方法和父类的方法名称相同,参数列表相同。个数相同。参数类型相同

递归:一个方法调用自身的一种编程方式 [奇数求和]

package studyDemo9yue;
public class study01 {
	public static void main(String[] args) {
		System.out.println(sum(10));
	
	}
	public static int sum (int num) {
		int isJiSHu = num % 2  ==0 ?  num-1 : num;
		if(isJiSHu == 1){
			return isJiSHu;
		} else {
			return isJiSHu + sum (isJiSHu - 2 );
		}
	}
}

递归--[阶乘]

public class study01 {
	public static void main(String[] args) {
		System.out.println(jieCheng(5));
	
	}
	public static int jieCheng (int num) {
		if(num ==1 ){
			return num;
		}else {
			return num * jieCheng(num -1);
		}
	}
}

递归应该注意的点:

1.应该有跳出的逻辑