抽象类和接口

抽象类和接口

抽象类:
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的 类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象, 这样的类就是抽象类。
抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法、初 始化块和构造方法和普通类一样。 由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。
示例代码:

public abstract class Animal {
	//成员变量
    protected int weight =0;
    {
        System.out.println("初始化块");
    }
    //构造器
    public Animal(){
        System.out.println("Animal 的构造器");
    }
    public Animal(int weight) {
        this.weight=weight;
        System.out.println("Animal 的构造器");
    }
    // 定义一个普通方法 休息
    public void sleep() {
        System.out.println("休息");
    }
    
    //抽象方法 没有方法体
    public abstract void running();
    public abstract String sayWeiget();
    
}

继承抽象类

/**
 * 继承抽象类要重写里面的抽象方法
 * @author 我是灰太狼
 */
class AnimalTwo extends Animal{

	@Override
	public void running() {
		// TODO Auto-generated method stub
		System.out.println("running");
	}
	@Override
	public String sayWeiget() {
		// TODO Auto-generated method stub
		return null;
	}
}

接口:
接口,在JAVA编程语言中是一个抽象类型,是抽象方法的集合, 接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方 法。
接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象 的属性和方法。
接口则包含类要实现的方法。 除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。
接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的 所有方法,否则就必须声明为抽象类。
示例代码:

/**
 * 
 *[修饰符] interface 接口名 extends 父接口1,父接口2,......
 *{
 *    //零到多个静态常量定义...
 *    //零到多个抽象方法定义....
 *}
 *接口可以继承多个父接口,但接口只能继承接口,不能继承类。
 * @author 我是灰太狼
 *
 */
public interface InterfaceOne {
	
	//编译时自动为接口里定义的成员变量增加public static final修饰符
    int INT_A=11;//声明时必须赋值
    public final static int INT_B=11;
    //public static final int INT_B=11;//没有报错,不知道是否可以
    
    //编译时自动为接口里定义的方法添加public abstract修饰符
    public abstract void print();
    void test();
    
}

接口的实现
当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明为抽象的类。 类使用implements关键字实现接口。

/**
 * 抽象类可以继承一个类和实现多个接口
 * @author 我是灰太狼
 *
 */
public abstract class Demo2 implements InterfaceOne,InterfaceTwo {
	
}

/**
 * 类可以继承一个类和实现多个接口,不过要重写它的方法。
 * @author 我是灰太狼
 *
 */
class Demo implements InterfaceOne,InterfaceTwo {

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

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

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

抽象类和接口的对比
抽象类使用extends关键字来继承抽象类,如果子类不是抽象类的话,它需要提供抽象类中所有声明的 抽象方法的实现;接口使用关键字impements来实现接口,它需要提供接口中所有声 明的方法的实现。
抽象类除了不能实例化抽象类之外,它和普通Java类没有任何区别;接囗是完全不同的类型。
抽象类可以继承一个类和实现多个接口,接口只可以继承一个或多个其它 接口。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值