接口和final

目录

接口:

概念:

语法格式:

接口与抽象类的区别:

类与接口的各种方法:

类实现接口的格式:

接口的注意事项:

接口的具体代码:

final:

应用场景:

修饰类与修饰方法:

final的具体代码:


接口:

概念:

Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。(个人来看:接口无异于提供一种对外的契约,以供不同的对象去用(实现))

语法格式:

访问权限修饰符  interface  接口名{
             公共的、静态的、不可修改的 属性
             抽象方法(默认 public abstract修饰)   
       }

如:

//接口
public interface Interface {
    public abstract void jieko();//方法是抽象方法
    public static final int a=20;//变量必须有初始值
}

接口与抽象类的区别:

接口:

访问权限修饰符  interface  接口名{
             公共的、静态的、不可修改的 属性
             抽象方法(默认 public abstract修饰)   
}

抽象类:

访问权限修饰符  abstract class 类名{
    属性;
    构造函数;
    方法;
    抽象方法;
}

java只能单继承可以多实现(只能有一个父类,但是可以实现多个接口,接口也可继承接口)

类与接口的各种方法:

类与类:单继承

类与接口:多实现

接口与接口:多继承

类实现接口的格式:

[修饰符] 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 关键字,用于修饰不可改变内容。

修饰成分:

  1. final可以修饰类,这个类将不能被继承。

  2. final可以修饰成员方法,这个方法将不能被重写。(细节:当你不想让父类的成员方法被子类重写时,我们可以使用final来修饰父类的成员方法;

    当你一定要让子类重写父类的成员方法,可以把父类的成员方法定义为抽象的,用abstatic修饰父类成员变量)

  3. 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修饰的常量名称,一般都有书写规范,所有字母都大写

总结:当我们定义的规则不想被改变时,可以使用final来进行修饰

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值