抽象和接口

overload重载。定义:在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。最常用的地方就是构造器的重载。

override重写。   定义:类型、名字、参数个数、参数类型完全相同。 重写父类的方法,不允许降低方法的访问权限,但可以提高访问权限(private,default,protected,public)。继承来的成员变量或方法的访问权限保持不变。


实现和继承非常相似,但是,继承只能单继承,而接口可以多实现。

 

抽象类可以有普通方法;而接口只有抽象方法。

 

一个类实现一个接口,必须重写接口中所有的方法,若没重写或只重写了部分方法,则该类必须是抽象类;

 

重写抽象类的抽象方法/接口的所有方法,要写上public,是有方法体的所以不是abstract method

 

向上转型对象调用子类重写/抽象类虽不能new对象,但该对象也可调用子类重写的方法/接口回调(接口是特殊的抽象类)

package com.demo12;

public class LeiRenYuan {
	void crySpeak(String s) {
		System.out.println(s);
	}

}
package com.demo12;

public class People extends LeiRenYuan{
	void crySpeak(String s) {
		System.out.println("***"+s+"***");
	}
	void computer(int a,int b) {
		int c=a*b;
		System.out.println(c);
	}

}
package com.demo12;

public class Test {
	public static void main(String[] args) {
		LeiRenYuan lry=new People();//向上转型
		lry.crySpeak("I love this game");//调用子类重写的方法
		
		People p=(People)lry;//把向上转型对象强制转换成子类对象
		p.computer(10,10);//computer是子类新增的方法,所以不可以用lry调用
		
	}

}
/*
运行结果为:
***I love this game***
100

*/

 

接口也可以作参数

如果一个方法的参数类型是double,那么可以向该参数传递byte、int、long、float、double类型的数据。(对于基本数据类型的参数,向该参数传递的值的级别不可以高于该参数的级别。)

同理,如果一个方法的参数是接口类型,我们就可以将任何实现该接口的类的实例的引用传给该接口参数,那么接口参数就可以回调类实现的接口方法。

package com.demo15;

public interface SpeakHello {
	void speakHello();

}
package com.demo15;

public class Chinese implements SpeakHello{
	public void speakHello() {
		System.out.println("中国人说你好");
	}
	
}
package com.demo15;

public class English implements SpeakHello{
	public void speakHello() {
		System.out.println("英国人说hello");
	}

}
package com.demo15;

public class KindHello {
	public void lookHello(SpeakHello hello) {   //参数类型是接口
		hello.speakHello();//接口回调
	}

}
package com.demo15;

public class Test {
	public static void main(String[] args) {
		KindHello kindHello=new KindHello();
		Chinese c=new Chinese();
		English e=new English();
		kindHello.lookHello(c);
		kindHello.lookHello(e);
		
		
	}

}
/*
运行结果:
中国人说你好
英国人说hello
*/

 

posted @ 2022-03-14 10:57  SherryYuan  阅读(29)  评论(0)    收藏  举报