详述抽象类与接口区别

抽象类
1、 在多态中,父类方法的方法体是多余的
2、 一个方法没有方法体,则该方法为抽象方法
3、 一个类中如果有抽象方法,那么这个类一定是抽象类,否则语法错误(abstract 抽象的)
4、 如果父类有抽象方法,那么子类需要实现该抽象方法,否则该类需要是抽象类(注:抽象类不能创建对象,但是可以有构造方法)
5、 一个抽象类中可以没有抽象方法,但是有抽象方法的类一定是抽象类
6、 抽象类与普通类的区别:
。 。 。 a、抽象类不能创建对象,普通类可以
。 。 。 b、抽象类需要abstract关键词修饰,普通类不需要
。 。 。 c、抽象类可以有抽象方法,普通类一定没有抽象方法

父类:

package dubhe;

//3、一个类中如果有抽象方法,那么这个类一定是抽象类,否则语法错误(abstract 抽象的)
public abstract class Mammal {

	public abstract void move();//2、一个方法没有方法体,则该方法为抽象方法
}

子类:

package dubhe;

public class Whale extends Mammal {

	//4、如果父类有抽象方法,那么子类需要实现该抽象方法,否则该类需要是抽象类(注:抽象类不能创建对象,但是可以有构造方法)
	//5、一个抽象类中可以没有抽象方法,但是有抽象方法的类一定是抽象类
	@Override
	public void move() {
		System.out.println("靠鳍游动。。。");
		
	}
}

Test类:

package dubhe;

public class Test {

	public static void main(String[] args) {
		Mammal mammal = new Whale();
		mammal.move();
		//1、在多态中,父类方法的方法体是多余的
		
		//6、抽象类与普通类的区别:
		//a、抽象类不能创建对象,普通类可以
		//b、抽象类需要abstract关键词修饰,普通类不需要
		//c、抽象类可以有抽象方法,普通类一定没有抽象方法
	}

}

————————————————————————
接口
1、 如果一个源文件中的方法全是抽象方法,则可以定义为接口
2、 接口没有构造方法
3、 接口中的抽象方法默认public abstract,所以可以忽略不写
4、 一个接口可以继承多个其他接口
5、 规范:接口名以I开头
6、 接口中的变量默认是 public static final
7、 接口中抽象方法使用 implements
8、 实现类实现接口的同时可以继承接口中的常量
9、 一个类如果不实现接口中所有方法,则该类必须为抽象类
10、 一个类可以实现多个接口
接口类:

	//1、如果一个源文件中的方法全是抽象方法,则可以定义为接口
	//2、接口没有构造方法
	//3、接口中的抽象方法默认public abstract,所以可以忽略不写
	
	interface IA{
		
	}
	
	interface IB{
		
	}
	
	//4、一个接口可以继承多个其他接口
	//5、规范:接口名以I开头
	//6、接口中的变量默认是 public static final
public interface IJIekou implements IA,IB{
		int AGE = 18;
		
		void move();
		
		void breathe();
		
}

实现类:

//7、接口中抽象方法使用 implements
//8、实现类实现接口的同时可以继承接口中的常量
//9、一个类如果不实现接口中所有方法,则该类必须为抽象类
//10、一个类可以实现多个接口
public class Shixian implements IJIekou/*,List*/ {

	@Override
	public void move() {
		System.out.println("wangboshuoqi");
		
	}

	@Override
	public void breathe() {
		
	}

}

Test类:


public class Test {

	public static void main(String[] args) {
		//11、instanceof
		Shixian shixian = new Shixian();
		System.out.println(shixian instanceof Shixian);
		System.out.println(shixian instanceof Object);
//		System.out.println(shixian instanceof IJiekou);
	}
}
//1、一个类如果没有实现接口中所有方法,则该类必须为抽象类
//2、接口中不能定义具体东西
//3、从JDK8之后可以有具体方法,但必须为 static 或 sefault

抽象类与接口的区别:
1、 定义:抽象类 abstract 接口 interface
2、 构造方法:抽象类有构造方法 接口没有构造方法
3、 继承:抽象类只能单继承 接口可以继承多个接口
4、 实现:抽象类型extends 接口 implements
5、 成员变量:抽象类可以定义任何合法的成员变量 接口只能定义public static final的变量,即常量
6、 方法:抽象类可以定义任意合法方法 接口中只能定义抽象方法,JDK8.0+可以定义多个static或default修饰的具体方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值