一. 抽象
1.关键字:abstract
2.抽象类格式:abstract class 类名
public abstract class Animal {}
3.抽象方法:修饰符 abstract 返回值类型 方法名 (参数列表);
抽象方法没有方法体
例:public abstract void eat();
具体方法:修饰符 返回值类型 方法名(参数类名){方法体}
4.补充:单行注释:ctrl+/
多行注释:ctrl+shift+/
5.子类继承抽象类的特点:
必须重写父类中的抽象方法
例如:
public class Dog extends Animal {
public Dog() {
super();
// TODO 自动生成的构造函数存根
}
public Dog(String name, int age) {
super(name, age);
// TODO 自动生成的构造函数存根
}
@Override
public void eat() {
// TODO 自动生成的方法存根
System.out.println("狗吃骨头");
}
}
6.抽象类特点:
a.不能实例化对象,通过多态的形式实现实例化
Animal a = new Dog("旺财",3);
b.可以有抽象方法,也可以有具体方法
c.有抽象方法的类必须定义为抽象类
d.抽象类中可以有抽象方法,也可以没有
![抽象方法和具体方法](https://img-blog.csdnimg.cn/20190309135148843.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p5X3lm,size_16,color_FFFFFF,t_70)
7.final 可以自定义常量
private final int num=19;
8.成员特点:
a.成员变量
可以是变量,也可以是自定义的常量
b.构造方法
不是没有用,用于子类创建对象时访问父类的构造方法
c.成员方法
既可以是抽象方法,也可以是具体方法
![在这里插入图片描述](https://img-blog.csdnimg.cn/2019030913541575.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p5X3lm,size_16,color_FFFFFF,t_70)
## 二.接口
1.关键字:interface
2.格式:interface 接口名{} 例如:public interface study {}
3.类实现接口用 implements
格式: class 类名你implements 接口名 {}
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190309135703151.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p5X3lm,size_16,color_FFFFFF,t_70)
4.实例化:
按照多态的方式,有具体的子类实例化,
有抽象类或者重写接口中所有的抽象方法
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190309140410545.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p5X3lm,size_16,color_FFFFFF,t_70)