修饰符
虽然这里提及的很多类还有方法是什么都没有总结,但是大家都是大佬,所以还是想先总结下修饰符,我当时就很懵B
Java的修饰符根据修饰的对象不同,分为类修饰符、方法修饰符、变量修饰符,其中每种修饰符又分为访问控制修饰符和非访问控制修饰符。访问控制存在的原因:a、让客户端程序员无法触及他们不应该触及的部分 b、允许库设计者可以改变类内部的工作方式而不用担心影响到客户端程序员
1.1 访问权限修饰符
protected重点突出继承,只要是子类,就算再不同得包中也可以访问
default(默认缺省)重点突出包,只能在相同得包中的类才可以访问
1. protected修饰符的修饰的成员变量和方法也称为受保护的成员变量和方法, 受保护的成员变量和方法可以在本类或同一个包中的其它类(包括子类)中通过类的实例进行访问,也可以被同一个包中的类或不同包中的类继承,但是不能在不同包中的其它类(包括子类)中通过类的实例进行访问。
也就是说不同包中想要访问父类用protected修饰的方法和变量,是不可以new 同一个对象去访问的,只能通过子类的super去调用。
2.顶层类只能用public访问修饰符和default(默认)访问修饰符修饰,其中用默认修饰符修饰的类(及没有任何修饰符的类,如class B{})不能被其他包中的类继承,这也说明了default(默认)访问修饰符突出的是包权限。
3.如果一个类使用public修饰,那该类的类名必须与他所在的源文件名相同。一个.java源文件中有且只有一个public类,顶层类只能用public和默认修饰符(即无修饰符)修饰。
4.所有的缺省修饰就是什么都不要写就如果可以,不用刻意的加上default 会报错。
5.一个类的内部类可以被其他访问控制修饰符protected、default、private修饰,相当于类的成员。
6.访问方法/成员属性/内部类时要先访问类的权限,如果可以访问类,才可以访问方法/成员属性/内部类。但是如果方法/成员属性/内部类的权限比外部类小,就要就近原则,看方法/成员属性/内部类的权限,然后才能决定这个方法/成员属性/内部类是否可以被访问
一定要区分他和访问权限修饰符,我刚开始总是分不清他俩是干什么的放错位置
访问权限修饰符是控制能否访问这个类/方法的,对于类/方法而言是最重要的权限,所以在创建类/方法时一定要写在最前面,它高于一切
这篇文章解释的非常好,可以看一看这位大佬的—>java中的访问修饰符
1.2 其他修饰符
抽象类/方法修饰符:abstract
最终类/方法/属性修饰符:final
静态方法/属性控制符:static
应该还有其他的,但是不常用(我就知道这几个,嘿嘿)
1.2.1 抽象类/方法修饰符:abstract
抽象类修饰符 abstract :用 abstract 修饰符修饰的类,被称为抽象类。
抽象方法控制符 abstract :用修饰符 abstract 修饰的方法称为抽象方法。抽象方法仅有方法头,没有方法体和操作实现。
1.2.2 最终类/方法/属性修饰符:final
最终类修饰符 final :当一个类不能被继承时可用修饰符 final修饰为最终类。被定义为 final 的类通常是一些有固定作用、用来完成某
最终方法控制符 final :用修饰符 final修饰的方法称为最终方法。最终方法是功能和内部语句不能更改的方法,即最终方法不能重写覆盖。final固定了方法所具有的功能和操作,防止当前类的子类对父类关键方法的错误定义,保证了程序的安全性和正确性。所有被
属性修饰符 final :最终域修饰符 final 是用来定义常量的。一个类的域 ( 成员变量 ) 如果被修饰符 final 说明,则它的取值在程序的整个执行过程中都是不变的
1.2.3 静态方法/属性控制符:static
静态方法控制符 static :用修饰符 static 修饰的方法称为静态方法。静态方法是属于整个类的类方法;而不使用static 修饰、限定的方法是属于某个具体类对象的方法。 由于 static方法是属于整个类的,所以它不能操纵和处理属于某个对象的成员变量,而只能处理属于整个类的成员变量,即 static 方法只能处理 static的域。
静态域修饰符 static :用 static修饰的成员变量仅属于类的变量,而不属于任何一个具体的对象,静态成员变量的值是保存在类的内存区域的公共存储单元,而不是保存在某一个对象的内存区间。该类的任一对象访问它时取到的都是相同的数据;该类的任一对象修改它时 , 也都是对同一个内存单元进行操作。
还是不太全,以后慢慢补