修饰符及接口和内部类

java有3类修饰符:static finaly abstract

static

在类中,使用static修饰的成员变量,就是静态变量,反之为非静态变量。

final

  1. final修饰的类不能被继承,没有子类

    例如:我们是无法写一个类去继承String类,
    然后对String类型扩展的,因为API中已经被String类定义为final
    的了
    2. 用final修饰的方法可以被继承,但是不能被子类的重写。

    1. 用final修饰的变量表示常量,只能被赋一次值.其实使用final修饰的变量也就成了常量了,因为值不会再变
      了。

abstract

abstract修饰符可以用来修饰方法也可以修饰类
* 如果修饰方法,那么该方法就是抽象方法;
* 如果修饰类,那么该类就是抽象类。
* 抽象类和抽象方法的关系
* 抽象类中可以没有抽象方法,但是有抽象方法的类一定要声明为抽象类。
* 声明类的同时,加上abstract修饰符就是抽象类
声明方法的时候,加上abstract修饰符,并且去掉方法的大口号,同时结尾加上分号,该方法就是抽象方法

抽象类,不能使用new关键字来创建对象,它是用来让子类继承的。
抽象方法,只有方法的声明,没有方法的实现,它是用来让子类实现的。
注:子类继承抽象类后,需要实现抽象类中没有实现的抽象方法,否则这个子类也要声明为抽象类。

为什么需要接口?接口和抽象类的区别

接口就是比“抽象类”还“抽象”的“抽象类”,可以更加规范的对子类进行约束。全面地专业地实现了:规范和具体实现的分离。
抽象类还提供某些具体实现,接口不提供任何实现,接口中所有方法都是抽象方法。接口是完全面
向规范的,规定了一批类具有的公共方法规范。
从接口的实现者角度看,接口定义了可以向外部提供的服务。
从接口的调用者角度看,接口定义了实现者能提供那些服务。
接口是两个模块之间通信的标准,通信的规范。如果能把你要设计的系统之间模块之间的接口定义
好,就相当于完成了系统的设计大纲,剩下的就是添砖加瓦的具体实现了。大家在工作以后,做系
统时往往就是使用“面向接口”的思想来设计系统。

接口的本质

接口就是规范,定义的是一组规则,体现了现实世界中“如果你是…则必须能…”的思想。如果你是天
使,则必须能飞。如果你是汽车,则必须能跑。如果你好人,则必须干掉坏人;如果你是坏人,则
必须欺负好人。
接口的本质是契约,就像我们人间的法律一样。制定好后大家都遵守。
OO的精髓,是对对象的抽象,最能体现这一点的就是接口。为什么我们讨论设计 模式都只针对具
备了抽象能力的语言(比如c++、java、c#等),就是因为设计模式所研究的,实际上就是如何合
理的去抽象。

接口和抽象类的区别

抽象类也是类,除了可以写抽象方法以及不能直接new对象之外,其他的和普通类没有什么不一样的。接
口已经另一种类型了,和类是有本质的区别的,所以不能用类的标准去衡量接口。
声明类的关键字是class,声明接口的关键字是interface。
抽象类是用来被继承的,java中的类是单继承。
类A继承了抽象类B,那么类A的对象就属于B类型了,可以使用多态
一个父类的引用,可以指向这个父类的任意子类对象
注:继承的关键字是extends
接口是用来被类实现的,java中的接口可以被多实现。
类A实现接口B、C、D、E..,那么类A的对象就属于B、C、D、E等类型了,可以使用多态
一个接口的引用,可以指向这个接口的任意实现类对象
注:实现的关键字是implements



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

   public interface Action{
public abstract void run();
//默认就是public abstract修饰的
void test();
public void go();
}
 ### 接口中的变量都是静态常量
      注:可以直接使用接口名访问其属性。因为是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);

  ###  一个类可以实现多个接口
      public class Student implements A,B,C,D{
//Student需要实现接口A B C D中所有的抽象方法
//否则Student类就要声明为抽象类,因为有抽象方法没实现
}
main:
A s1 = new Student();
B s2 = new Student();
C s3 = new Student();
D s4 = new Student();
### 一个接口可以继承多个父接口

###  接口的作用

接口的最主要的作用是达到统一访问,就是在创建对象的时候用接口创建
【接口名】 【对象名】= new 【实现接口的类】
这样你像用哪个类的对象就可以new哪个对象了,不需要改原来的代码。
假如我们两个类中都有个function()的方法,如果我用接口,那样我new a();就是用a的方法,new
b()就是用b的方法
这个就叫统一访问,因为你实现这个接口的类的方法名相同,但是实现内容不同

 ###  内部类就是在一个类中在编写另外一个类

  ### 内部类分为四种:
  1. 成员内部类
  2. 静态内部类
  3. 局部内部类
  4. 匿名内部类

后面接口,内部类详细的情况请看狂神说的java讲解 第6节面向对象

posted @ 2021-08-05 19:54  索匣  阅读(93)  评论(0编辑  收藏  举报