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 ...
随机推荐
- Wannafly Winter Camp 2020 Day 6G 单调栈 - 贪心
对于排列 \(p\),它的单调栈 \(f\) 定义为,\(f_i\) 是以 \(p_i\) 结尾的最长上升子序列的长度 先给定 \(f\) 中一些位置的值,求字典序最小的 \(p\) 使得它满足这些值 ...
- Linux教程-修炼
在2020这个特殊的时期,在家就是为国家做贡献!一切都会好起来的,加油中国!! Linux 第1章 Linux 简介 1.1 为什么要学习Linux 1.2 Linux是什么 1.3 Linux 与 ...
- CSS相对定位与绝对定位
1.相对定位 Position : relative ; 特点: 1 如果没有定位偏移量,对元素本身没有任何影响: 2 不使元素脱离文档流,空间是会被保留: 3 不影响其他元素布局: 4 left.t ...
- 对象的三大特性(封装、继承、多态)——java
一. 面向对象的三大特征 1. 封装---->减少了大量的冗余代码---->封装将复杂的功能封装起来,对外开放一个接口,简单调用即可.将描述事物的数据和操作封装在一起,形成一个类:被封装的 ...
- Linux-Windows10双系统安装
在Windows10系统上搭建完深度学习环境用于无人驾驶中的目标检测后,想在Linux系统上再尝试一下.由于VMware虚拟机安装的Linux系统不支持物理硬件,所以需要一步到位安装一个双系统.本文介 ...
- id、css命名规范
main热点:hot新闻:news下载:download子导航:subnav菜单:menu子菜单:submenu搜索:search友情链接:friendlink页脚:footer版权:copyrigh ...
- JDBC连接数据库的7个步骤
1.JDBC所需的四个参数username.password.url.driverClass 2.加载JDBC驱动程序 3.创建数据库连接connection对象conn 4.创建preparedSt ...
- KiKi's K-Number HDU - 2852 树状数组+二分
#include<iostream> #include<cstring> using namespace std; ; int tr[N]; int lowbit(int x) ...
- Linux 基础操作命令
关机和注销 shutdown -h now 立刻关机 shutdown -r now 立刻重启 shutdown -h + 1分钟后关机(重启同样用法) shutdown -h : 11点钟关机(重启 ...
- 树莓派3B从装系统到安装RYU过程
1.首先安装的是2019-09-26-raspbian-buster-lite系统 2.更换成国内源 更改apt源 sudo nano /etc/apt/sources.list(更改apt源) de ...