abstract
abstract 修饰方法
抽象方法
格式 : public abstract 返回值类型 方法名([可选参数列表]);
//抽象方法不能有方法体
//抽象方法必须在抽象类中
抽象类
格式: abstract class 类名{
}
注意: 如果类中含有抽象方法,则要求该类也是抽象类;
抽象类可以不含有抽象方法。
抽象类的子类(1)如果也是抽象类,则不用重写父类的方法
(2)如果是具体类,则需要重写父类的所有方法。
抽象类如何使用:
抽象类能否直接实例化?——不能。
使用抽象类时,需要用具体的类去继承,重写它的方法来实现。
抽象类的方法可以重载也可以重写。
当抽象类一个抽象方法都没有,子类的规则不变。
不可以和final、private、static一起使用。
public abstract class AbstractDemo {
public abstract void money();
public void money2() {}
public AbstractDemo(){}}
abstract class Demo2 extends AbstractDemo{
}
class Demo3 extends AbstractDemo{
public void money() {
}
}
interface
interface 接口
public interface 接口名{
//接口中的方法不能有方法体,需要被实现后重写。
public void 方法名();
}
类实现接口之后才能使用
class 类名 implements 接口名{
}
1.接口不能实例化
2.接口中定义的成员属性默认为static 和 final 类型的,默认是public修饰,变量必须有自己的值。
3.接口中定义的成员方法默认为public 和 abstract类型。
4.没有构造方法。
5.接口能够体现动态。是最常用的多态形式。面向接口开发。
6.向上造型,创造一个实现类的对象,将值赋值给一个接口类型的引用。
class和interface的关系
类和类
继承关系,多重继承,单继承
类和接口
实现关系,类实现接口,类能够实现多个接口
接口和接口
接口可以继承,多继承关系
抽象类和接口的异同
相同点:
抽象类和接口中都可以定义抽象方法
抽象类和接口都是多态的体现
抽象类和接口都不能实例化
不同点:
成员属性不一样、成员方法不一样
区别:
抽象类是用来做共性的属性和方法
接口是用来拓展的属性和方法
内部类
概念 定义在类内部的类
分类
成员内部类:类的内部,方法的外部
方法内部类:定义在方法的内部
静态内部类:定义在static修饰的类内部
匿名内部类:接口实现类的对象
调用格式
外部类名.内部类名 对象名 = 外部类对象.内部类对象();
Outer.Inner in = out.new Inner();//Outer和Inner都是类,其中Inner是内部类。
Outer.Inner in2 = new Outer().new Inner();
注意:
1.内部类可以直接访问外部类的成员变量和成员方法,用private修饰也可以访问。
2.外部类要访问内部类的成员变量和成员方法需要创建内部类的对象。