Java进阶—面向对象(三)
一、访问权限修饰符
java的访问修饰符有四种:private、protected、public、default。也就是我们常见的类的创建、属性的创建等时写在最前的那些单词,这四种访问修饰符的访问权限不一样。
(一)public
public:及共有的,是访问权限限制最宽的修饰符。被public修饰的类、属性、及方法不仅可以跨类访问,而且可以跨包访问。public可以修饰的东西如下:
//public修饰类
public class Test{
Public String name;//public修饰属性
//public修饰方法
public void setName(String name){
...
}
}
(二)protected
protected:及保护访问权限,是介于public和private之间的一种访问修饰。被protected修饰的属性及方法只能被类本身的方法和子类访问。(子类在不同的包中也可以访问)
(三)default
及默认的,不加任何访问修饰符。常被叫做“默认访问权限”或者“包访问权限”。无任修饰符时,只支持在同一个包中进行访问。
(四)private
private:及私有的,对访问权限限制最窄的修饰符。被private修饰的属性以及方法只能被该类的对象访问。它的子类也不可以访问,更不支持跨包访问。
修饰符 | 中文意思 | 使用 |
---|---|---|
public | 公共的 | 访问权限最大,可以在同一个项目中访问,无论是否在同一个包中 |
protected | 受保护的的 | 可以在同一个包中访问,也可以在继承该类的子类中使用(可跨包) |
default(通常什么也不写就表示默认的) | 默认的 | 只能在本包中访问 |
private | 私有的 | 只能在本类中访问,常用于修饰标准类的属性 |
二、三大非访问修饰符
(一)static 修饰符
-
静态变量:
static 关键字用来声明独立于对象的静态变量,无论一个类实例化多少对象,它的静态变量只有一份拷贝。 静态变量也被称为类变量。局部变量不能被声明为 static 变量。 也就是说静态变量被类中的每一个成员共享。
-
静态方法:
static 关键字用来声明独立于对象的静态方法。静态方法不能使用类的非静态变量。静态方法从参数列表得到数据,然后计算这些数据。
对类变量和方法的访问可以直接使用 类名.变量名 和 类名.方法名的方式访问。 当然也可以用对象名访问。
(二)final 修饰符
-
final 变量:
final 表示"最后的、最终的"含义,变量一旦赋值后,不能被重新赋值。被 final 修饰的实例变量必须显式指定初始值。final 修饰符通常和 static 修饰符一起使用来创建类常量。
-
final 方法
父类中的 final 方法可以被子类继承,但是不能被子类重写。
声明 final 方法的主要目的是防止该方法的内容被修改。
-
final 类
final 类不能被继承,没有类能够继承 final 类的任何特性。
(三)abstract 修饰符
-
抽象类:
抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充。
一个类不能同时被 abstract 和 final 修饰。如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则将出现编译错误。
抽象类可以包含抽象方法和非抽象方法。
-
抽象方法
抽象方法是一种没有任何实现的方法,该方法的具体实现由子类提供。
抽象方法不能被声明成 final 和 static。
任何继承抽象类的子类必须实现父类的所有抽象方法,除非该子类也是抽象类。
如果一个类包含若干个抽象方法,那么该类必须声明为抽象类。抽象类可以不包含抽象方法。
抽象方法的声明以分号结尾,例如:public abstract student();。