面试题: 抽象类和接口之间的区别

面试题:抽象类和接口之间的区别

1)成员的区别:
抽象类中
成员变量:既可以是常量,也可以是变量
成员方法:既可以是抽象方法(abstract不能省略),也可以是非抽象方法
构造方法:既存在无参构造方法,也可以存在有参构造方法(目的:为了给当前类进行数据初始化)

	abstract class Animal{
              private String name ;
              private int age ;
              private String color ;
              public Animal(){}
              public Animal(String name,int age,String color){
                     this.name = name ;
                     this.age = age ;
                     this.color = color ;
              }
              public abstract void eat() ;
	}                     
	class Cat extends Animal{
        	public Cat(){
			}
       		public Cat(String name,int age,String color){
       			super(name,age,color) ;
      	  	}
       		 public void eat(){
       			 //...
       		}
     }
                     Animal a = new Cat() ; //抽象类多态
     接口中
         成员变量:只能是常量,存在默认的 修饰符 public static final (可以省略不写)
         成员方法:只能是抽象方法:存在默认修饰符 public abstract(省略不写)
         构造方法:没有构造方法,接口中所有的方法---都认为是没有方法体



   2)关系的区别
        三点
              类与接口的关系
              类与类的关系
              接口与接口的关系

               类与类之间的关系:    extends 继承关系
                                          只支持单继承,不支持多继承,但是可以多层继承

               类和接口的关系:      implements关系:实现关系
                                   一个类继承另一个类的同时,可以实现多个接口,中间逗号给隔开


               接口与接口之间:            extends:继承关系
                                    不仅支持单继承,也可以多继承,中间使用逗号隔开
   3)设计理念的区别
        抽象类--->不能实例化---通过具体的子类实例化--->存在继承关系,体现的是一种 "is a"的关系
        接口---->不能实例化--->通过具体的子实现类实例化---->谁如果实现了接口,就具备额外的功能,
                    体现的是一种"like a"的关系
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值