package com.abstractClass;
/*
*
- 有抽象方法的类一定是抽象类,抽象类里可以有普通方法。
- 抽象类与普通类的不同点:
- 有抽象方法时,抽象方法有abstract修饰,没有方法体。
*/
public abstract class AbstractClass {
int b = 1;
private int c = 1;
public void test1() {
int a = 1;
return;
}
public abstract void test2();
private abstract void test3();//错:这样不能被子类实现
public static abstract void test4();//错:static可以用抽象类直接调用了,还实现子类干嘛!
}
/*
-
接口内只有常量 和 抽象类
*/
interface InterTest{
/*一、接口中的成员变量:
*接口中有成员变量,但只能是静态常量。系统会自动为成员变量加上public static final三个修饰符。————public static final- */
int a1 ;
public int a2 = 1;
public static int a3 = 1;
/*二、接口中的方法:
*接口中的方法可以是普通方法、类方法、默认方法。
*普通方法:系统默认加上public abstract修饰。例如:void test(); ———— public abstract
*类方法:可以用接口直接调用。必须显示使用static修饰,系统默认添加public。———— public static
*默认方法:只能使用实现类的实例调用。必须显示使用default修饰,系统默认添加public。 默认方法是各个实现类公共使用的方法,所以不能加static,故只能使用实现类的实例调用默认方法。————public default- */
//接口内的所有成员是多个类的共同行为规范,所以所有成员的访问权限都是public
private int a = 1;//错:Illegal modifier for the interface field InterTest.a; only public, static & final are permitted//接口中的方法不能有方法体,访问修饰符只能是public static
public void test1();//静态方法必须有方法体
public static void test2();//错:This method requires a body instead of a semicolon
public static void test3() {}
public void test6() {//错:Abstract methods do not specify a body
}
private void test7();//错:Illegal modifier for the interface method test3; only public, abstract, default, static and strictfp are permitted/**
- 三、接口中的内部类、内部接口、内部枚举:只能是public static。————public static
*/
public static class Test{
private int a = 1;//内部类成员的定义随意。
}
private class Test2{//错:The interface member type Test2 can only be public
}
} - */