类结构:

class Person{//类名(首字母大写)
string name;//字段;
void eat(){//普通方法;
}
Person(){//构造方法;
}
}

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

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

抽象类:

abstract class Graph{
int i = 10;//抽象类中定义字段
public void add(){//抽象类中定义普通方法
}
Graph(){//抽象类中定义构造方法
}
abstracteat();//抽象方法
}

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

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:支持多态,不能创建对象,可以被继承