目录
接口:
概念:
Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。(个人来看:接口无异于提供一种对外的契约,以供不同的对象去用(实现))
语法格式:
访问权限修饰符 interface 接口名{ 公共的、静态的、不可修改的 属性 抽象方法(默认 public abstract修饰) }
如:
//接口 public interface Interface { public abstract void jieko();//方法是抽象方法 public static final int a=20;//变量必须有初始值 }
接口与抽象类的区别:
接口:
访问权限修饰符 interface 接口名{ 公共的、静态的、不可修改的 属性 抽象方法(默认 public abstract修饰) }抽象类:
访问权限修饰符 abstract class 类名{ 属性; 构造函数; 方法; 抽象方法; }
类与接口的各种方法:
类与类:单继承
类与接口:多实现
接口与接口:多继承
类实现接口的格式:
[修饰符] class 类名 implements 接口名1,接口名2,...{//接口可以同时实现多个接口 //实现所有的抽象方法 }
public class UsbImpp implements Usb,Hdmi{//类可以同时实现多个接口 @Override public void chongdain() {//重写接口中的方法 System.out.println("我要充电"); } @Override public void toying() { } }
接口的注意事项:
1.接口里面的方法是抽象方法
2.接口里面的常量必须要有初始值
3.实现接口的关键字是implements
4.实现了接口就得实现接口的方法
接口的具体代码:
//接口 public interface Interface { public abstract void jieko();//方法是抽象方法 public static final int a=20;//变量必须有初始值 } //接口的实现(实现类) public class InterfaceImplemets implements Interface{//实现了接口就得实现接口的方法 @Override public void jieko() {//重写接口的抽象方法 } } //测试 public class Test { public static void main(String[] args) { // Interface anInterface = new Interface();//新建不了接口对象 InterfaceImplemets interfaceImplemets = new InterfaceImplemets();//但是可以新建实现类的对象 } }
final:
应用场景:
子类可以在父类的基础上改写父类内容,比如,方法重写。那么我们能不能随意的继承API中提供的类,改写其内容呢?显然这是不合适的。为了避免这种随意改写的情况,Java提供了final
关键字,用于修饰不可改变内容。
修饰成分:
final可以修饰类,这个类将不能被继承。
final可以修饰成员方法,这个方法将不能被重写。(细节:当你不想让父类的成员方法被子类重写时,我们可以使用final来修饰父类的成员方法;
当你一定要让子类重写父类的成员方法,可以把父类的成员方法定义为抽象的,用abstatic修饰父类成员变量)
final可以修饰变量,这个变量只能赋值一次。
当final修饰的变量是基本数据类型时,那么该变量不能改变
当final修饰的变量是引用类型,该变量的值可以改变,但是该变量的引用地址不能再次改变
修饰类与修饰方法:
修饰类的格式:
[public] final class 类名{ }修饰方法的格式:
修饰符 final 返回值类型 方法名(参数列表){ }final修饰类时,这个类不能被继承;final修饰方法时,子类不能重写该方法,但是可以调用这个方法(如果你定义的功能强制子类不能覆盖重写,可以使用final进行修饰。)。
final的具体代码:
//Student类 public class Student { String name; int age; public void study(){ System.out.println("学生的学习方法"); } } //Final类 public class Final extends Student{ public void study(){ } public static void main(String[] args) { //当final修饰的变量是引用类型,该变量的值可以改变, // 但是该变量的引用地址不能再次改变 /*final int a[] = {2,33,23,4}; a[0] = 20; a = new int[20];*/ //当final修饰的变量是基本数据类型时,那么该变量不能改变 /* final int a = 0; a= 20;*/ } }
被final修饰的常量名称,一般都有书写规范,所有字母都大写