abstract class和interface的区别

一,abstract关键字
abstract可以修饰类或方法
public abstract class demo {
    
    public abstract void MyMethod();
    
}

要点:
1,含有abstract方法的类一定是抽象类(abstract修饰),但抽象类并不一定有abstract方法;
2,如果 abstract 类的子类没有实现其超类的所有 abstract 方法,该子类也是 abstract 类;
3, abstract class类中定义抽象方法必须在具体(Concrete)子类中实现;
4,不能有抽象构造方法或抽象静态方法。

public abstract class demo {
	
	public abstract void myMethod1();
	
	public abstract void myMethod2();
	
	public void myMethod3(){
		System.out.println("可以不是抽象方法");
	};
	
	//abstract demo(){}
	//static abstract void myMethod();
}
//这里的abstract去掉会报错
abstract class son1 extends demo{
	public void myMethod1(){
		System.out.println("实现方法MyMethod1()");
	}
}

//abstract class类中定义抽象方法全部实现
class son2 extends demo{
	public void myMethod1(){
		System.out.println("实现方法MyMethod1()");
	}
	public void myMethod2(){
		System.out.println("实现方法MyMethod2()");
	}
}

所以,
  • abstract 关键字不能应用于 staticprivate final 方法,因为这些方法不能被重写,因此,不能在子类中实现。

  • final 类的方法都不能是 abstract,因为 final 类不能有子类。




二,接口
接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。
1,接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final;
2,抽象类中只包含常量和方法的定义,而没有变量和方法的实现


interface interfaceDemo {
	//默认public static final 类型
	int id=0;
	public static final String name="";
	//默认public abstract类型
	void method1();
	
	public abstract void method2();
	
}

class son implements interfaceDemo{
	public void method1() {
		
	}

	public void method2() {
		
	}
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值