6

接口&多态 面试题及习题_欢迎来视频课学习的技术博客_51CTO博客

 8 months ago
source link: https://blog.51cto.com/teayear/7887243
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

接口&多态 面试题及习题

精选 原创

第一题:概念辨析

  1. 什么是接口,如何定义接口?
  • 接口,是Java语言中一种引用类型,是方法的集合。
  • 使用interface关键定义接口,其中可以定义抽象方法,默认方法,私有方法,静态方法等方法。
  1. 什么叫做多态,条件是什么?
  • 一类事物的行为,具有多种表现形式。
  • 继承或者实现【二选一】
  • 方法的重写。
  • 父类引用指向子类对象。
  1. 使用多态特性,带来了什么样的好处?
  • 增强方法的扩展性和复用性。
  1. 使用多态特性,注意什么样的弊端?
  • 由于类型的提升,导致调用子类对象特有的方法,必须向下转型。

第二题:语法练习

  • 语法点:接口
  • 按步骤编写代码,效果如图所示:

接口&多态 面试题及习题_测试类

编写步骤:
  1. 定义接口A,普通类B实现接口A
  2. A接口中,定义抽象方法showA。
  3. A接口中,定义默认方法showB。
  4. B类中,重写showA方法
  5. 测试类中,创建B类对象,调用showA方法,showB方法。
  • 参考答案.:
public class Test2 {
	    public static void main(String[] args) {
	        B b = new B();
	        b.showA();
	        b.showB();
	    }
	}
	
	interface A{
	    public abstract void showA();
	    public default void showB(){
	        System.out.println("BBBB");
	    }
	}
	
	class B implements A {
	    @Override
	    public void showA() {
	        System.out.println("AAAA");
	    }
	}

第三题:语法练习

  • 语法点:接口
  • 按步骤编写代码,效果如图所示:

接口&多态 面试题及习题_面试_02

  • 编写步骤:
  1. 定义接口A,普通类B实现接口A。
  2. A接口中,定义抽象方法showA。
  3. A接口中,定义私有方法show10(String str),循环打印10次str。
  4. A接口中,定义默认方法showB10,showC10,分别调用show10方法,传入参数。
  5. 测试类中,创建B对象,调用showA方法,showB10方法,showC10方法
  • 参考答案.:
public class Test3 {
	    public static void main(String[] args) {
	        BB b = new BB();
	        b.showA();
	        b.show10B();
	        b.show10C();
	    }
	}
	
	interface AA{
	    public abstract void showA();
	    public default void show10B(){
	       show10("BBBB");
	    }
	
	    public default void show10C(){
	        show10("CCCC");
	    }
	
	    private  void show10(String str){
	        for (int i = 0; i < 10; i++) {
	            System.out.print(str+" ");
	        }
	        System.out.println();
	    }
	}
	
	class BB implements AA {
	    @Override
	    public void showA() {
	        System.out.println("AAAA");
	    }
	
	}

第四题:语法练习

  • 语法点:接口,静态
  • 按步骤编写代码,效果如图所示:
接口&多态 面试题及习题_测试类_03
  1. 定义接口A,普通类B实现接口A。
  2. A接口中,定义抽象方法showA。
  3. A接口中,定义私有静态方法show10(String str),循环打印10次str。
  4. A接口中,定义静态方法showB10,showC10,分别调用show10方法,传入参数。
  5. B类中,定义静态方法showD
  6. 测试类中,使用A接口,调用静态showB10方法,showC10方法,
  7. 测试类中,使用B类,调用showA方法,showD方法。
  • 参考答案.:
public class Test4 {
	    public static void main(String[] args) {
	       AAA.showB();
	       AAA.showC();
	        BBB bbb = new BBB();
	        bbb.showA();
	        BBB.showD();
	    }
	}
	
	interface AAA {
	    public abstract void showA();
	    public static void showB(){
	        System.out.println("static BBBB");
	
	        show10("BBBB");
	    }
	
	    public static void showC(){
	        System.out.println("static CCCC");
	
	        show10("CCCC");
	    }
	
	    private static void show10(String str) {
	        for (int i = 0; i < 10; i++) {
	            System.out.print( str+" ");
	        }
	        System.out.println();
	    }
	}
	
	class BBB implements AAA {
	    @Override
	    public void showA() {
	        System.out.println("AAA");
	    }
	
	    public static void showD(){
	        System.out.println("DDDD");
	    }
	}

第五题:语法练习

  • 语法点:接口,多态
  • 按步骤编写代码,效果如图所示:

接口&多态 面试题及习题_开发语言_04

  1. 定义接口Universe,提供抽象方法doAnything。
  2. 定义普通类Star,提供成员发光shine方法
  3. 定义普通类Sun,继承Star类,实现Universe接口
  4. 测试类中,创建Star对象,调用shine方法
  5. 测试类中,多态的方式创建Sun对象,调用doAnything方法,向下转型,调用shine方法。
  • 参考答案.:
public class Test5 {
		    public static void main(String[] args) {
		        Star s  = new Star();
		        s.shine();
		
		        System.out.println("====================");
		
		        Universe universe = new Sun();
		
		        universe.doAnything();
		        Sun sun  = (Sun) universe;
		        sun.shine();
		    }
		}
		
		interface  Universe{
		    public abstract void doAnything();
		}
		
		class Star {
		    public void shine(){
		        System.out.println("star:星星一闪一闪亮晶晶");
		    }
		}
		class  Sun extends Star implements Universe{
		    @Override
		    public void doAnything() {
		        System.out.println("sun:太阳吸引着9大行星旋转");
		    }
		    @Override
		    public void shine() {
		        System.out.println("sun:光照八分钟,到达地球");
		    }
		}
  • 收藏
  • 评论
  • 分享
  • 举报

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK