基础题目
第一题:概念辨析
什么是接口,如何定义接口?
接口,是Java语言中一种引用类型,是方法的集合。使用interface关键定义接口,其中可以定义抽象方法,默认方法,私有方法,静态方法等方法。
什么叫做多态,条件是什么?
一类事物的行为,具有多种表现形式。条件:
继承或者实现【二选一】方法的重写。父类引用指向子类对象。
使用多态特性,带来了什么样的好处?
增强方法的扩展性和复用性。
使用多态特性,注意什么样的弊端?
由于类型的提升,导致调用子类对象特有的方法,必须向下转型。
第二题:语法练习
语法点:接口
按步骤编写代码,效果如图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rMpjQUkR-1591883388012)(img\1.jpg)]
编写步骤:
定义接口A,普通类B实现接口AA接口中,定义抽象方法showA。A接口中,定义默认方法showB。B类中,重写showA方法测试类中,创建B类对象,调用showA方法,showB方法。
/**
*
*/
package inplemetnts;
/**
* @author sq
* @date 2020年5月12日
* @Desription: TODO
*/
interface A // 接口a
{
public abstract void showA();// 抽象方法a
public default void showB() {// 默认方法b
}
}
class B implements A{// b类工具继承a
/* (non-Javadoc)
* @see inplemetnts.A#showA()
*/
@Override
public void showA() {
// TODO Auto-generated method stub
System.out.println("AAA");
}
/* (non-Javadoc)
* @see inplemetnts.A#showB()
*/
@Override
public void showB() {
// TODO Auto-generated method stub
System.out.println("BBB");
}
}
public class Test {
public static void main(String[] args) {
B b1=new B(); // 创建b1对象
b1.showA(); // 调用B类中showA()方法
b1.showB();
}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qXSbiGCH-1591883388018)(E:\FileRecv\10 接口_多态_课件与作业\03 作业\img\QQ截图20200512160816.jpg)]
第三题:语法练习
语法点:接口
按步骤编写代码,效果如图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cxE9qYwT-1591883388022)(img\2.jpg)]
编写步骤:
定义接口A,普通类B实现接口A。A接口中,定义抽象方法showA。A接口中,定义私有方法show10(String str),循环打印10次str。A接口中,定义默认方法showB10,showC10,分别调用show10方法,传入参数。测试类中,创建B对象,调用showA方法,showB10方法,showC10方法
/**
*
*/
package inplemetnts;
/**
* @author sq
* @date 2020年5月12日
* @Desription: TODO
*/
interface A1{ // A1接口
public abstract void showA();// 抽象showA方法
default void showA10(String str){ // 默认的showA10方法
for (int i = 0; i < 9; i++) { // 循环九次
for (int j = 0; j < 3; j++) { // 循环三次
System.out.print(str);
}
System.out.print(" "); // 打完三个加一个空格
}
}
public default void showB10(){ // 默认showB方法
this.showA10("B"); // 在showA10()中传入B字符串
}
public default void showC10(){ // 在showA10()方法中传入C字符串
this.showA10("C");
}
}
class B1 implements A1{ // B1实现A1类
/* (non-Javadoc)
* @see inplemetnts.A1#showA()
*/
@Override
public void showA() {// 重写抽象方法
// TODO Auto-generated method stub
System.out.print("AAA");
}
}
public class Test2 {
public static void main(String[] args) {
B1 a=new B1(); // 创建a对象
a.showA();
System.out.println();
a.showB10();
System.out.println();
a.showC10();
}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NjMr7tK8-1591883388026)(E:\FileRecv\10 接口_多态_课件与作业\03 作业\img\QQ截图20200512163424.jpg)]
第四题:语法练习
语法点:接口,静态
按步骤编写代码,效果如图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CUARHhMO-1591883388029)(img\4.jpg)]
编写步骤
定义接口A,普通类B实现接口A。A接口中,定义抽象方法showA。A接口中,定义私有静态方法show10(String str),循环打印10次str。A接口中,定义静态方法showB10,showC10,分别调用show10方法,传入参数。B类中,定义静态方法showD测试类中,使用A接口,调用静态showB10方法,showC10方法,测试类中,使用B类,调用showA方法,showD方法。
/**
*
*/
package inplemetnts;
/**
* @author sq
* @date 2020年5月12日
* @Desription: TODO
*/
interface A2{ // A2 接口
public abstract void showA(); // 抽象showA方法
static void show10(String str){ // show10()方法传入参数
for (int i = 0; i < 9; i++) { // 循环10次
for (int j = 0; j < 4; j++) {// 循环4次
System.out.print(str);
}
System.out.print(" ");// 循环4次空一个
}
}
public static void showB10(){ // 静态的showB10()方法
System.out.println("static BBBB"); //打印static BBBB
A2.show10("B"); // 传入B字符串到show10()方法中
}
public static void showC10(){
System.out.println("\nstatic CCCC");//转义字符\n换行
A2.show10("C");
}
}
class B2 implements A2{ // B2类实现A2接口
/* (non-Javadoc)
* @see inplemetnts.A2#showA()
*/
@Override
public void showA() { // 重写A2类中的抽象方法
// TODO Auto-generated method stub
System.out.println("\nAAAA"); // 打印 换行 AAAA
}
public static void showD(){ // 静态方法showD()
System.out.println("DDDD");
}
}
public class Test3 {
public static void main(String[] args) {
A2.showB10(); // A2接口的showB10()方法
A2.showC10(); // A2接口的showC10()方法
B2 b =new B2(); // 创建B2类的对象
b.showA(); // 调用B2类的showA方法
b.showD();
}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6oUr6CsJ-1591883388031)(E:\FileRecv\10 接口_多态_课件与作业\03 作业\img\QQ截图20200512165732.jpg)]
第五题:语法练习
语法点:接口,多态
按步骤编写代码,效果如图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-znjUhRAd-1591883388034)(img\5.jpg)]
编写步骤
定义接口Universe,提供抽象方法doAnything。定义普通类Star,提供成员发光shine方法定义普通类Sun,继承Star类,实现Universe接口测试类中,创建Star对象,调用shine方法测试类中,多态的方式创建Sun对象,调用doAnything方法,向下转型,调用shine方法。
/**
*
*/
package inplemetnts;
/**
* @author sq
* @date 2020年5月12日
* @Desription: TODO
*/
interface Universe{ // 接口宇宙类
public abstract void doAnything();
}
class Star{ // 星星类
public void shine(){// 发光方法
System.out.println("star:星星一闪一闪亮晶晶");
}
}
class Sun extends Star implements Universe{ // 太阳类继承星星类并实现宇宙类
/* (non-Javadoc)
* @see inplemetnts.Universe#doAnything()
*/
public void shine(){ // 重写发光方法
System.out.println("sun:光照八分钟,到达地球");
}
public void doAnything() { // 实现宇宙类的抽象方法
// TODO Auto-generated method stub
System.out.println("sun:太阳吸引着9大行星旋转");
}
}
public class Test4 {
public static void main(String[] args) {
new Star().shine();// 创建星星对象,调用星星类里的发光方法
System.out.println("=======================");// 打印====
Sun s=new Sun(); // 创建太阳类
s.doAnything(); // 调用太阳类的doAnything方法
Sun s1=(Sun)s; // 向下转型调用太阳类重写的发光方法
s1.shine();
}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bN4ccdK0-1591883388036)(E:\FileRecv\10 接口_多态_课件与作业\03 作业\img\QQ截图20200512173248.jpg)]