抽象类
-
抽象类有静态代码块,构造方法,抽象方法,
-
四种修饰符修饰的:普通方法,静态方法,普通变量, 静态成员变量
-
抽象方法只有两种修饰符:public 和 protected
-
抽象类可以有抽象方法,也可以没有
-
抽象类可以继承接口
abstract class Hello
{
//成员变量
int a=10;
public static String str="hello world !";
static int nums=30;
private static int nu=30;
//静态代码块
static{}
//构造方法
public Hello(){}
//普通方法
public void print(){}
protected void print1(){}
void print2(){}
private void print3(){}
//抽象方法
public abstract void print4();
protected abstract void print5();
//private abstract void print6();//报错,抽象方法只能设置public或者protected
//可以有四种修饰符的静态方法
public static void print7(){}
}
接口
-
接口可以extends接口
-
定义常量和抽象方法
-
接口可以定义默认方法时,需要其实现类调用。
-
两个接口有同名的默认方法时,一个类同时实现两个接口时会报错,后代分别实现也不行,只要实现的接口有同名默认方法就会报错,建议重写。但是两个同名的static方法就不会报错
-
接口调用静态方法,直接用接口名称调用。
interface jie
{
public default void speak()
{
System.out.println("jie");
}
public static void num()
{
System.out.println("");
}
int a=10;
public static final int b=20;
}
interface kou //extends jie 接口可以继承接口
{
public default void speak()
{
System.out.println("kou");
}
}
//报错
class A implements jie //父类实现了jie
{
}
class B extends A implements kou //子类实现了kou
{
}
//虽然父类A和子类B分别实现的接口jie和接口B,但是有同名的默认方法,报错
//类C同时实现两个有相同默认方法的报错
class C implements jie,kou //报错
{
}
//但是当接口kou实现接口jie,然后其他类实现时就不会出现问题,类似于子类覆盖