Java中的抽象类与接口
一、什么是抽象类(Abstract Class)?1.1 概念1、被abstract关键字修饰的类称为抽象类2、抽象类是不能直接实例化对象也就是不能new对象3、抽象类是对一类事物的抽象包含这类事物共同属性和共同行为小猫这个类class Cat和二哈这个类class Dog它们都能抽象成动物这个类class Animal小猫和二哈有很多共同的属性比如它们都有名字、年龄等 它们也都有共同的行为比如它们都会吃饭睡觉发出叫声等等这些属性Animal抽象类都有1.2 特点1、可以包含成员变量构造方法普通方法静态方法抽象方法2、抽象方法没有方法体必须有子类继承并重写3、抽象类可以没有抽象方法但有抽象方法的类一定是抽象类代码示例// 抽象类动物abstract class Animal {String name; // 成员变量// 普通方法public void eat() {System.out.println(动物需要进食);}// 抽象方法public abstract void shout();}// 子类继承抽象类必须实现抽象方法class Dog extends Animal {Overridepublic void shout() {System.out.println(汪汪汪);}}二、什么是接口Interface2.1 概念1、接口是一种行为规范同一2、接口不关心类的内部属性只规定类能做什么也就是关注接口里面写了那些方法2.2 接口特点1、接口不能有构造方法、不能实例化只能通过其它类去实现接口之后重写接口内部的方法2、接口里的成员变量默认是被public static final修饰的3、接口里的方法默认是被public abstract 修饰的4、一个类可以实现implements多个接口这样弥补了单继承的不足示例// 接口1跑interface Run {void run();}// 接口2跳interface Jump {void jump();}// 一个类可以实现多个接口class Dog implements Run, Jump {Overridepublic void run() {System.out.println(狗在跑);}Overridepublic void jump() {System.out.println(狗在跳);}}一句话总结抽象类为了复用代码描述“一类事物”的共性接口 为了制定规范描述“一类行为或能力”的约定