java基础之 修饰符
一、访问修饰符
Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。
1、default (即缺省,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
2、private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
3、public : 对所有类可见。使用对象:类、接口、变量、方法
4、protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
- 基类的 protected 成员是包内可见的,并且对子类可见;
- 若子类与基类不在同一包中,那么在子类中,子类实例可以访问其从基类继承而来的protected方法,而不能访问基类实例的protected方法。
二、非访问修饰符
1、static:修饰符,用来创建类方法和类变量。
静态变量:static关键字用来声明独立于对象的静态变量。
(1)无论一个类实例化多少对象,它的静态变量只有一份拷贝。
(2)局部变量不能被声明为static。
静态方法:Static关键字用来声明独立于对象的静态方法。
(1)静态方法不能使用类的非静态变量。
public class VisitNot {
// 声明静态变量
public static String str = "喵帕斯";
public int a = 0;
// 声明静态方法
public static String printStr() {
// 局部变量不能被声明为static,会报错
// static String localv = "10";
// 静态方法可以使用静态变量
str = "(" + str + ")";
// 静态方法不可以使用非静态变量,会报错
// System.out.println(a);
return str;
}
public static void main(String[] args) {
// 访问静态变量 类.变量名
System.out.println(VisitNot.str);
// 访问静态方法 类.方法名
System.out.println(VisitNot.printStr());
}
}
注意:对类(静态)变量和方法的访问可以直接使用classname.variablename和classname.methodname的方式访问。
2、final:修饰符,用来修饰类、方法和变量。
(1)final变量能被显式地初始化并且只能初始化一次。
(2)修饰的变量为常量,不可修改。
(3)final对象的引用不能改变。
(4)类中的final方法可以被子类继承,但是不能被子类重写,可被重载。
(5)final类不能被继承。
public class FinalTest {
// 声明final变量
public final int a = 0;
// 声明的final变量引用了一个实例对象
public final B b = new B();
// 声明的final变量是不能被修改的,会报错
public int m() {
b = new B();
a += 100;
return a;
}
// 声明final的方法可以重载
class B {
public final void m2() { }
public final void m2(int a) { }
}
// 声明final的方法,不能被重写,会报错
class c extends B{
@Override
public final void m2() { }
}
final class D{}
// 声明final的类,不能被继承
class E extends D{}
}
3、abstract:修饰符,用来创建抽象类和抽象方法。
(1)abstract如果用于修饰类,此类将不能被实例化;
(2)abstract如果用于修饰方法,那么此方法的类必须也要用abstract修饰;
(3)abstract修饰的类用于继承,子类必须实现里面abstract修饰的方法;
(4)用abstract修饰的类和方法,不能再使用 final、static来进行修饰;
(5)abstract类可存在非abstract的方法,但存在abstract方法的类,必须是abstract修饰的;
package test;
public class abstractTest {
public static void main(String[] args) {
System.out.println("abstractTest");
}
}
// 这是一个abstract修饰的类
abstract class A {
// abstract类里的abstract方法
public abstract void aM();
// abstract类里的普通方法
public void bM() {
int i = 0;
i++;
System.out.println(i);
}
}
// 类B继承abstract类A
class B extends A {
//必须实现abstract类A的abstract方法、否则报错
@Override
public void aM() {
System.out.println("abstract类A的abstract方法aM(),实现了!");
}
}
4、synchronized和volatile修饰符,主要用于线程的编程。
这个有点复杂,后面再看。
java基础之 修饰符的更多相关文章
- java基础之修饰符和内部类
1.java修饰符 /* 修饰符: 权限修饰符:private,默认的,protected,public 状态修饰符:static,final 抽象修饰符:abstract 类: 权限修饰符:默认修饰 ...
- Java基础-访问修饰符
访问修饰符 default (即缺省,什么也不写): 在同一包内可见,不使用任何修饰符.使用对象:类.接口.变量.方法. private : 在同一类内可见.使用对象:变量.方法. 注意:不能修饰类( ...
- JAVA基础_修饰符
引言:Java的修饰符根据修饰的对象不同,分为类修饰符.方法修饰符.变量修饰符,其中每种修饰符又分为访问控制修饰符和非访问控制修饰符.访问控制存在的原因:a.让客户端程序员无法触及他们不应该触及的部分 ...
- Java 基础 面向对象修饰符和自定义数据类型
不同修饰符使用细节 常用来修饰类.方法.变量的修饰符如下: public 权限修饰符,公共访问, 类,方法,成员变量 protected 权限修饰符,受保护访问, 方法,成员变量 默认什么也不写 也是 ...
- 4. java基础之修饰符
其他修饰符 public 可以修饰属性.方法.构造方法.类 protected 可以修饰属性.方法.构造方法 default 可以修饰属性.方法.构造方法.类 private 可以修饰属性.方法.构造 ...
- java中的修饰符和基本数据类型
1.java中的修饰符 java中的修饰符主要是用来对类资源进行一个权限控制,上面表格表现的很清晰,无需多言. 2.java中的基本数据类型 java中的数据类型分为引用类型和基本类型.基本数据类型有 ...
- Java中的 修饰符
java中的修饰符分为类修饰符,字段修饰符,方法修饰符. 根据功能的不同,主要分为以下几种. 1.权限访问修饰符 访问权限的控制常被称为具体实现的隐藏 把数据和方法包进类中,以及具体实现的隐藏,常共 ...
- 深入理解Java的protected修饰符
其实Java的protected修饰符,权限定义的很微妙,大致有以下几种: (1)protected控制符用于修饰方法和成员变量: (2)一个类的protected方法或成员变量,在包外是不能通过该类 ...
- java访问权限修饰符
作用域 当前类 同一package 子孙类 其他package public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ × × × ja ...
随机推荐
- 刷题78. Subsets
一.题目说明 题目78. Subsets,给一列整数,求所有可能的子集.题目难度是Medium! 二.我的解答 这个题目,前面做过一个类似的,相当于求闭包: 刷题22. Generate Parent ...
- ES6数组去重方法
Set实例的方法分为两大类:操作方法(用于操作数据)和遍历方法(用于遍历成员),操作方法有:add(value).delete(value).has(value).clear():遍历方法有:keys ...
- P6070 [RC-02] GCD [杜教筛,莫比乌斯反演]
没啥好说的,杜教筛板子题. \[\sum_{i=1}^{N} \sum_{j=1}^{N}\sum_{p=1}^{\lfloor \frac{N}{j} \rfloor}\sum_{q=1}^{\lf ...
- P1642 规划 [01分数规划]
裸题,考虑size完了跑一个树上背包,这题没了. // by Isaunoya #include <bits/stdc++.h> using namespace std; #define ...
- js替换时,空格被替换为双引号
替换代码 str.replace(/\"/g, "'") 将双引号替换为单引号,如果字符串中,存在space(空格)时,使用以上语句将会导致空格被替换为双引号,可以使用如 ...
- gulp常用插件之gulp-sourcemaps使用
更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-sourcemaps这是一款用来生成映射文件的一个插件,SourceMap 文件记录了一个存储源代码与编译代码对应位置映射的信息文件.我 ...
- Postman: Test
Tests 参考:Writing Tests Testing examples 这里写测试用例,进行一些判断等等.即处理断言 下面新建了两个测试用例,名字分别是”Status code is 200“ ...
- H5-IOS能否自动弹出软键盘
在ios移动端, 弹出软键盘只能 行为事件才能触发 弹出软键盘, 脚本事件是不能触发 弹出软键盘 (行为事件:如点击,触屏等) (脚本事件:如 定时器定时触发)
- python3练习100题——044
41-43讲关于python的变量范围,没有什么别的内容,我删除了. 原题链接:http://www.runoob.com/python/python-exercise-example44.html ...
- 自定义Redux
实现mini版redux 1. 理解redux模块 1). redux模块整体是一个对象模块 2). 内部包含几个函数 createStore(reducers) // reducers: funct ...