类结构:

class Person{//类名(首字母大写)

  string name;//字段;

  void eat(){//普通方法;

  }

  Person(){//构造方法;

  }

}

  1:一个类中必须有一个构造方法,如果没有显示的写出来那么一定隐式的存在

  2:可以创建对象,可继承

抽象类:

abstract class Graph{

  int i = 10;//抽象类中定义字段

  public void add(){//抽象类中定义普通方法

  }

  Graph(){//抽象类中定义构造方法

  }

  abstract eat();//抽象方法

}

为什么需要抽象:因为提取的公共的模板方法,根本没必要做任何实现,并且应该提示继承的类必须覆写

  1:抽象方法没有方法体,子类在继承抽象类时必须覆写抽象方法;

  2:抽象类的作用 模板类,基类,根类:主要作为公共的模板,提取公共的属性放到里面,让其他的子类继承

  3:抽象方法必须存于抽象类中[接口也可以],不能够放在普通类中

  4:抽象类的子类

    a) 非抽象类必须覆写父类中的所有的抽象方法,

    b) 抽象类不用覆写父类中的抽象方法

  5:abstract 修饰的类及方法   :  不创建对象 , 能被继承

枚举:

enum Sex{

  MAN,WOMAN  //字段 是固定值一个对象就是一个值固定不变   常量=对象

  public void add(){//定义普通方法

  }

  Graph(){//定义构造方法,默认都是private修饰,不能够是public 所以枚举不能创建对象

  }

}

  1:枚举的出现解决了问题: 很轻松设计一种类型,让它的值只有固定个数,用于像性别这样的数据

  2:每一个自定义的枚举类型都(隐式的)拓展至 Enum 类,因此我们的枚举对象可以调用到Enum中的方法的(看API )

  3:枚举不能被继承;

  4:不能创建对象,不能被继承

接口:

interface USB{//接口名

  String name;//默认public static final 修饰的全局常量

  void add();//默认public abstract 修饰

  static eat(){//可以有静态方法

  }

  default run(){//默认方法

  }

}

  1:一个类其实可以实现多个接口,需要覆写所有接口中的抽象方法

  2:一个类可以在继承一个类的同时实现多个接口,但是继承的代码必须写实现前面

  3:支持多态,不能创建对象,可以被继承