贝克面试问题总结——接口与抽象类

贝克面试问题总结——接口与抽象类

昨天参加了一下贝克找房的面试,被问到了一些基础的问题,这几天会写几篇博客来总结一下这些问题

一,接口

1.接口的定义

public interface Demo {
	
	public static final int a=1;//定义常量
	public abstract void print();//定义抽象方法

}

@接口中只能定义常量和抽象方法,前面的修饰词都可以省略,会默认为常量和抽象方法

2.接口的使用

在类定义的时候使用implements关键字实现接口

@一个类可以实现多个接口,实现了接口就必须实现接口中所有的抽象方法,可以继承到接口中所有的静态常量

@一个接口可以通过extends关键字实现多个接口!

二,抽象类

1.抽象类的定义

public abstract class Demo1 {

	public int a=10;
	public void test(){
		System.out.println("非抽象方法");
		
	}
	public abstract void test1();//抽象方法,没有方法体

}

@抽象类必须使用public或者protected修饰(因为private不能被子类继承)省略时默认为public

@抽象类不能被实例化,需要依靠子类向上转型的方法

2.抽象类的使用

public   class DemoMain extends Demo1{

	
	public static void main(String[] args) {

		DemoMain dm=new DemoMain();
		int c=dm.a;
		System.out.println(c);
		dm.test();
		dm.test1();
		
	}
	@Override
	public  void test1(){
		
		System.out.println("重写了抽象类里的抽象方法!");
	}
}

@抽象类使用extends关键字继承,单继承

@子类(非抽象类)必须重写抽象类的所有抽象方法,如果没有实现,就必须也定义为抽象类

三,接口和抽象类的区别

区别一:抽象类中可以存在非抽象的方法         
接口中的方法被默认的变成抽象方法,只要是定义了接口,接口中的方法 就全部变成了抽象类即使你不写 abstract  它也是抽象的方法    

区别二:实现抽象类的方法时, 如果方法是抽象的,子类必须重写抽象的方法. 如果方法不是抽象的, 子类可以选择继承             
实现了接口 就必须实现接口中的所有方法, 因为接口中的方法默认的全部都是抽象的方法   

区别三:抽象类可以有私有的成员变量和成员方法              
接口中的方法全都被默认的修饰为: public  abstract   类型的方法

区别四:一个类只能继承一个抽象类                       
一个类可以实现多个接口  ,接口可以实现多继承  

区别五:抽象类实际上就是比普通方法多了一些抽象方法,可以有构造方法

接口默认属性为静态常量,方法为抽象方法,不能有构造方法。

猜你喜欢

转载自blog.csdn.net/qq_41819698/article/details/82803415