java编程细节总结(六):抽象类是什么,接口又是什么?——详解抽象类与接口的区别

在进行抽象类和接口区别之前,我们先要明白什么是抽象类,什么是接口。


一、什么是抽象类?

      关于这个问题之前,我们必须要明白子类继承超类的关系,子类会继承超类(父类)的所有方法,甚至可以重写父类的方法。那么有这个基础就好解释抽象类了。

      抽象类是一个只有超类或者用作子类的超类拥有的特性。这样可以很直白的说明了,只有父亲拥有抽象类,子类不能拥有,所以这就限制了父类抽象化了不能被实例化,而子类可以实例化对象。

              

由如图所示

如果子类继承了抽象类的父类,只有子类可以进行实例化,同时实例化后的对象可以调用它实现父类的方法。可以总结:父类使用抽象abstract关键字来修饰,抽象方法必须写在抽象类里,且继承该父类的子类必须实现父类的方法(方法重写)。

//抽象父类
public abstract class Parent  {
	private int sum;


	public abstract void sum_data();//抽象方法,没有实现
	
}
//继承抽象类的子类
public class children extends Parent{

	public static void main(String[] args) {
		// TODO Auto-generated method stub
			children c = new children();
			c.sum_data();
			Parent p = new Parent() ;//此处报错,抽象类不能被实例化
	}

	@Override
	public void sum_data() {
		// TODO Auto-generated method stub
		int data = 0 ;
		data +=1;
		System.out.println(data);
	}//覆盖父类抽象方法,方法重写


	
}

二、什么是接口?

   接口就是一堆的方法的特征,没有具体的实现,仅仅是特征。它包含了所有的要实现的方法,要想实现这 些方法可以在不同的类中实现它,这就能控制接口方法的实现,也就展示给人们具有不同样的行为java没有多继承,所以采用多接口来实现多种方法。

    这是很重要的,我们希望在java的个个结构方便编写,在实现方法时候不能总是依赖于类中的方法,所有就有了接口。(这里强调,接口不是类,它是所有方法的特征集合。)

  请看接口的定义:

public interface openmethod {
		int age();
}

 

这里有一些接口知识点:1)接口必须是public类型的

                                       2)接口申明常量时,就会加public static final默认类型

                                       3)接口也可以被其他子类接口继承

 

接口的调用方法:

public class children implements openmethod {//implement关键字调用

	public int age() {
		// TODO Auto-generated method stub
		return 10;
	}//必须写出接口方法,可以对应的实现其中的接口方法
	public static void main(String[] args) {
		children c =new children();		
		System.out.println(c.age());
}	
}

三、接口和抽象类的区别

其实看了很明显了,接口是一堆没有实现的方法,它不是类,所以在实现接口的时候要把所有的方法都实现,但是可以根据自己需要进行重写方法,而抽象类只能是实现有关键字abstract修饰的方法,且有一个相同特征就是接口不可以被实例化,抽象类也不能被实例化。默认方法,接口不能拥有默认方法实现,但是抽象类可以写默认方法实现。修饰符中,抽象类可以是public private default等,但是接口只有public。抽象方法可以有构造器,接口不能有,接口只能拥有方法的创建,不能被实现(jdk1.8之前。)

jdk1.8后接口有默认方法和静态方法,但是我们不建议用,因为接口就像作用一个方法堆的形式,它最好就是用来提供我们服务的,我们怎么去用它就取决于我们。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值