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