上面我们学习了几个修饰符,在开发中经常会用的到,所以必须熟练的掌握。接下来我学习一下接口和访问控制。

一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。

  1.1、接口与抽象类的区别

     抽象类也是类,除了可以写抽象方法以及不能直接new对象之外,其他的和普通类没有什么不一样的。接口已经另一种类型了,和类是有本质的区别的,所有不能用类的标准去衡量接口。

          声明类的关键字是class,声明接口的关键字是interface。

          抽象类是用来被继承的,java中的类是单继承
              类A继承了抽象类B,那么类A的对象就属于B类型了,可以使用多态
              一个父类的引用,可以指向这个父类的任意子类对象
              注:继承的关键字是extends

          接口是用来被类实现的,java中的接口可以被多实现。
              类A实现接口B、C、D、E..,那么类A的对象就属于B、C、D、E等类型了,可以使用多态
              一个接口的引用,可以指向这个接口的任意实现类对象
              注:实现的关键字是implements

  1.2、接口中的方法都是抽象方法

    接口中可以不写任何方法,但如果写方法了,该方法必须是抽象方法
          例如:
          public interface Action{
              public abstract void run();

              //默认就是public abstract修饰的
              void test();
              public void go();
          }

  1.3、接口中的变量都是静态常量(public static final修饰)

    接口中可以不写任何属性,但如果写属性了,该属性必须是public static final修饰的静态常量。
          注:可以直接使用接口名访问其属性。因为是public static修饰的
          例如:
          注:声明的同时就必须赋值.(因为接口中不能编写静态代码块)
          public interface Action{
              public static final String NAME = "tom";
              //默认就是public static final修饰的
              int AGE = 20;
          }
          main:
              System.out.println(Action.NAME);
              System.out.println(Action.AGE);

  1.4、一个类可以实现多个接口  

 1 public class Student implements A,B,C,D{
 2             //Student需要实现接口A B C D中所有的抽象方法
 3             //否则Student类就要声明为抽象类,因为有抽象方法没实现
 4         }
 5         main:
 6             A s1 = new Student();
 7             B s2 = new Student();
 8             C s3 = new Student();
 9             D s4 = new Student();
10 
11             注:
12             s1只能调用接口A中声明的方法以及Object中的方法
13             s2只能调用接口B中声明的方法以及Object中的方法
14             s3只能调用接口C中声明的方法以及Object中的方法
15             s4只能调用接口D中声明的方法以及Object中的方法
16 
17             注:必要时可以类型强制转换
18             
19             例如:
20             接口A 中有test()
21             接口B 中有run()
22 
23             A s1 = new Student();
24             s1.test();
25 
26             B s2 = new Student();
27             s2.run();
28             
29             if(s1 instanceof B){
30                 ((B)s1).run();
31             }
实例

相关文章:

  • 2022-02-04
  • 2021-10-18
  • 2022-12-23
  • 2022-12-23
  • 2021-08-04
  • 2021-10-03
  • 2021-10-18
  • 2021-12-09
猜你喜欢
  • 2022-12-23
  • 2021-05-31
  • 2021-07-15
  • 2022-12-23
  • 2022-12-23
  • 2021-09-28
  • 2021-06-19
相关资源
相似解决方案