静态方法和非静态方法
1、非静态方法可以访问类中的任何成员,静态方法只能访问类中的静态成员。
2、静态的内存空间是固定的,相对来说更省资源,缺点是不自动进行销毁;创一个实例就要开辟一个新内存,耗费资源,实例则可以做销毁。
3、静态方法属于类所有,类实例化前即可使用;静态方法只能访问类的静态变量,并且只能调用类的静态方法。
4、static内部只能出现static变量和其他static方法;而且static方法中还不能使用this等关键字,因为它是属于整个类。
主要区别:
1、静态方法在创建对象前就可以使用了,非静态方法必须通过new出来的对象调用。
2、静态方法可以通过类名-方法名直接调用;普通方法需要创建一个实例,也就是new一个对象,然后通过对象名-方法名的方式来调用。
3、静态类只能包含静态成员,否则会抛出编译错误;然而非静态类既可以包含非静态成员也可以包含静态成员。
抽象方法
抽象类的特点:
1、不能创建抽象类的对象。
2、抽象类可以有抽象方法。
3、抽象类的子类必须实现所拥有的抽象方法,否则子类也要是抽象类。
抽象的作用:作为模板而存在,定义一组子类共有的属性和方法;这个模板是没有具体意义的,通过abstract 禁止创建对象;强制子类必须重写抽象方法;让程序变得更稳定。
默认方法
Java 8引入了一个新功能,叫默认方法,通过默认方法可以指定接口方法的默认实现。换句话说,接口能提供方法的具体实现。因此,实现接口的类如果不显式地提供该方法的具体实现,就会自动继承默认的实现。