Java基础_接口和抽象类

Day_12 接口与抽象类

一.接口
1.定义:由于Java中不允许多重继承,因此要实现多个类的功能,则可以通过实现多个接口来实现。Java接口和Java抽象各类代表的就是抽象类型,就是我们需要提出的抽象层的具体体现。如果要提高程序的复用率,增加程序的可维护性,可拓展新,就必须是面向接口的编程。

2.格式:interface 接口名{代码…}

3.特点:
<1>接口中都是抽象方法。
<2>通过interface关键字创建接口。
<3>通过implements让子类来实现。
<4>接口是一个特殊的抽象类。
<5>接口突破了Java的单继承的局限性。
<6>接口和类之间可以多实现,接口和接口之间可以多继承。
<7>接口是对外暴露的规则,是一套开发规范。
<8>接口提高了程序的功能拓展,降低了耦合性。

4.用法
<1>接口中是没有构造方法的。
<2>接口中没有成员变量,都是常量,因此,当定义变量没有写修饰符时,会默认加上。
<3>接口中的方法默认是抽象的,如果不写明abstract,那么也会自动补齐。
<4>Java中单继承的局限性通过接口可解决,接口可多继承也可多实现,甚至可继承的同时多实现。

二.入门案例

public class Interface {
    
    

	public static void main(String[] args) {
    
    
		
		Zi z = new Zi();
		z.study();
		z.teach();

	}

}

interface Fu{
    
    
	
	public abstract void study();
	public abstract void teach();
	
}

class Zi implements Fu{
    
    
	
	public void study() {
    
    
		
		System.out.println("儿子学习");
		
	}
	
	public void teach() {
    
    
		
		System.out.println("儿子教书");
		
	}
	
}

三.接口与成员变量

public class Interface_Variable {
    
    

	public static void main(String[] args) {
    
    
		
		Zi7 z = new Zi7();
		
		System.out.println(z.number1);
		System.out.println(z.number);
		System.out.println(Fu7.number);

	}

}

interface Fu7{
    
    
	
	public final static int number = 10;
	
}

class Zi7 implements Fu7{
    
    
	
	int number1 = 30;
	
}

四.接口与成员方法

public class Interface_Methods {
    
    

	public static void main(String[] args) {
    
    
		
		Inter2 in = new InterImpl();
		
		System.out.println(in.count);
		System.out.println(Inter2.count);
		
		in.get();
		in.update();
	
	}

}

interface Inter2{
    
    
	
	int count = 20;
	void update();
	void get();
	
}

class InterImpl implements Inter2{
    
    
	
	public void update() {
    
    
		
		System.out.println("更新");
		
	}
	
	public void get() {
    
    
		
		System.out.println("获得");
		
	}
	
}

五.接口的多继承与多实现

public class Interface_Complexity {
    
    

	public static void main(String[] args) {
    
    
		
		Interface1 in = new Interface1Impl();
		
		in.save();
		in.update();

	}

}

interface Interface1{
    
    
	
	void save();
	void update();
	
}

interface Interface2{
    
    
	
	void get();
	void delete();
	
}

interface Interface3 extends Interface1,Interface2{
    
    
	
	void add();
	
}

class Interface1Impl implements Interface3{
    
    
	
	public void save() {
    
    
		
		System.out.println("吃饭吧");
		
	}
	
	public void update() {
    
    
		
		System.out.println("更新吧");
		
	}
	
	public void get() {
    
    }
	
	public void delete() {
    
    }
	
	public void add() {
    
    }
	
}

六.总结
1.类和类之间的关系:继承(extends)-单继承。
2.类和接口的关系:实现(implements)-单-多。
3.接口和接口的关系:继承(extends)-单-多,接口的多继承关系,打破了java单继承的局限性。
4.接口和抽象类的区别:
<1>抽象类用abstract,接口用interface。
<2>子类和抽象类之间是extends关系,而实现类和接口之间是implements关系。
<3>抽象类中可以有构造方法,接口里不能出现构造方法。
<4>抽象类中可以有变量,接口里没有变量,全部都是静态的常量。
<5>接口里定义常量的语法,String name = “Jack”;会自动为其补上public static final。
<6>抽象类中可以有普通方法和抽象方法,而接口中全部都是抽象方法。
<7>多继承:interface A extends B,C。其中A是子接口,同时拥有自己和B,C的功能。
<8>多实现:class AImpl implements M,N,O,P,其中AImpl是实现类,需要同时重写所有抽象方法,否则就是一个抽象类。
<9>继承的同时多实现:Class AImpl extends Object Implements M,N,一定是先继承,后实现。

猜你喜欢

转载自blog.csdn.net/weixin_41858806/article/details/111936482
今日推荐