java:接口,及抽象类和接口的概括总结

接口

在这里插入图片描述

接口的特点:

在这里插入图片描述

1.接口的成员变量都是常量,必须要赋值,默认修饰符是public static final;不能声明实例成变量

2.接口中成员方法都是抽象的实例成员方法,默认修饰符public sbstract,不能声明为static

public interface Interface {

	int ID=1;//等同于 public static final int ID=1;
	
	void test();//public abstract void test();
}
public interface Interface2 {
	
	void test1();

}
public interface Interface3 {

	void test2();
}

子类继承父类,只能继承一个父类; 类可以实现多个接口,多个接口要用,分割

public class Test **implements 	Interface2,Interface3** {
	


	@Override
	public void test2() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void test1() {
		// TODO Auto-generated method stub
		
	}

}

接口可以继承接口

//接口可以继承接口 
public interface TestIn1 extends Interface{

}

如果类没有实现接口的所有方法,这个类就要定义成抽象类

public abstract class TestImpl1 implements Interface{

}

如果一个类既要继承父类,又要实现接口,那先继承,后实现接口

public  class TestImpl2 extends Person implements Interface1,Interfacd2{
...
} 

接口中不能有构造方法,因为构造方法不是抽象的

接口的访问权限是public /缺省

问题:接口和抽象类很相似,好像接口能做的事用抽象类也能做,为什么还要用接口????

父类需要稳定的抽象方法,老是改动,这些子类以及子类的子类也会有影响
有时候需要给父类增加一些方法,不能直接从父类下手,可以新建接口,在接口上拓展方法,其他需要的子类自己去实现接口

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
//人的抽象类

public abstract class Person {
	
	int age;
	String name;
	int sex;
	
	public abstract void showInfo();

}

//厨师的接口

public interface Cooking {

	void fry();

	
}

//唱歌的接口

public interface Sing {
	void singing();

}
/**
 * 这个是描述会唱歌的厨子是个老师
 
 */

public class SCTeacher extends Person implements Cooking,Sing{

	String course;
	@Override
	public void singing() {
		System.out.println(super.name+"会唱歌");
		
	}

	@Override
	public void fry() {
		System.out.println(super.name+"会烧菜");
		
	}


//设置setInfo两种方法
	//public void setInfo(int age,String name,int sex,String course ){
	//	super.name =name;
	//	super.sex=sex;
	//	super.age=age;
	//	this.course=course;
//	}
	
	public void setInfo(){
		super.age=11;
		super.name="王老吉";
		super.sex=1;
		this.course="语文";
		
	}
	@Override
	public void showInfo() {
		System.out.println("会唱歌的厨子的老师的信息是");
		System.out.println(super.age);
		System.out.println(super.name);
		System.out.println(super.sex);
		System.out.println(this.course);
		
	}
	public static void main(String[] args) {

		SCTeacher s=new SCTeacher();
		//s.setInfo(11, "王老吉", 1, "语文");
		s.setInfo();
		s.showInfo();
		s.singing();
		s.fry();
	}

}

在这里插入图片描述

抽象类和接口的概括总结:

1.抽象类是对一类事物的高度抽象,其中既有属性也有方法;
2.接口是对方法的抽象,也是对一系列动作的抽象;
3.当需要对一类事物抽象的时候,应该就使用抽象类,好形成一个父类
当需要对一系列的动作抽象的时候,就需要使用接口,需要使用这些类的动作的类去实现相应的接口即可。

发布了45 篇原创文章 · 获赞 12 · 访问量 1115

猜你喜欢

转载自blog.csdn.net/weixin_46037153/article/details/104477565
今日推荐