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 ...
随机推荐
- echarts 【图表的基本使用】
一.柱状图 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <tit ...
- Python 教你 4 行代码开发新闻网站通用爬虫
\ GNE(GeneralNewsExtractor)是一个通用新闻网站正文抽取模块,输入一篇新闻网页的 HTML, 输出正文内容.标题.作者.发布时间.正文中的图片地址和正文所在的标签源代码.G ...
- 哈夫曼树 动态数组的使用vector
问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, …, pn-1},用这列数构造Huffman树的过程如下: 1. ...
- matlab逐行读取text文件,编写函数提取需要的文字
在数学建模中遇到的数据比较难处理,而且给的是text格式,自己想了好长时间才编出来,现在分享一下,可以交流学习 目标的text文件是 只提取里面的数据 需要自编函数 clc,clear path='D ...
- 在iOS下-input[disabled] 颜色变浅兼容&& input[readonly]仍可获取焦点解决方法
目标:在写input输入框时,想让其只读不写. 环境:在iPhone上 本来用的时readonly,可是readonly,居然可以获取焦点,不能弹出键盘:安卓手机完全木有问题,所以去用了disable ...
- 前端页面中:jsp和HTML的区别之处
JSP和HTML的区别 HTML页面是静态页面,也就是事先由用户写好放在服务器上,固定内容,不会变,由web服务器向客户端发送,平时上网看的网页都是大部分都是基于html语言的. JSP页面是有JSP ...
- 使用vim打开文件的16进制形式,编辑和全文替换
1.先用vim打开文件的二进制形式,如果不以二进制可能会产生转换错误. vim -b file-to-open.dat 2.用xxd把文件转换成十六进制格式 :%!xxd 现在就可以对待普通文本一样查 ...
- 【巨杉数据库SequoiaDB】巨杉再获企业级认可,分布式数据库领跑“一亿中流”
据全球最具权威的IT研究与顾问咨询公司 Gartner 预测,DBMS(数据库管理系统)市场从2017年到2018年增长了18.4%,达到461亿美元,这是有史以来最大幅的增长,并有望在2019年超过 ...
- layer弹出层右上角的关闭按钮怎么没有显示
问题描述:layer弹出层右上角的关闭按钮怎么没有显示,但鼠标移上去又可以点击 解决方式: 这是因为样式中需要一个图标,你的项目中缺少.解决如下:1.下载图标:http://www-x-zi-han- ...
- GNU Radio的hello world(转)
运行GNU Radio 需要注意的是,如果您的项目不需要用到硬件源和硬件池的话,直接使用Shell运行GRC是没有问题的.但是需要用到硬件源和硬件池的话,请记得使用管理员权限运行GRC,否则项目在执行 ...