接口和抽象类
抽象类:用abstract修饰的类;和一般的类是一样的,可以有实例方法和抽象方法;
抽象类可以没有抽象方法的,但是抽象方法必须放到抽象类里面;
抽象类不可以被实例化(就是类名 名字 = new 类名()),必须被继承
抽象方法:就是方法被abstract修饰的,必须放到抽象类里面;
抽象方法必须被重写;
抽象方法没有方法体的;
抽象方法的结构:
public abstract void eat();
接口:
接口是一个特殊的抽象类,理解就是不同类型的事物,的共性或者特点提取出来;
举个例子:比如飞机和鸟都有飞这个共性,可以写个接口放这个方法
接口的结构:
interface接口名{
//常量的定义和抽象方法定义
}
//如何在接口中编写有方法体的方法
->方法被default或者static修饰的(这个要jdk1.8以上才可以)
例子:public default/static void fun(){
System.out.println("可以实现有方法体的实例方法");
}
注意:接口的抽象方法一般都是public,这是因为很多类需实现接口,所以要public修饰
//调用接口里面的方法体
->我们通过接口名.方法实现调用的
一个类可以实现多个接口,但是只能继承一个类
内部类:
就是类里还有类
有三种情况:1、在一个类的外部;2在类的里,但是不在方法里面;3.是在类里面,并且在方法里。(不经常用到。下次找个机会详细写一下)