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 ...
随机推荐
- selenium等待机制
等待机制 因为你要查找的标签由于网速等原因迟迟没有加载出来,你就直接获取这个标签,很明显是报错,现有的简单粗暴的解决办法就是time.sleep(3),睡几秒,也就是设置线程等待,等这个标签加载出 ...
- iframe在iphone手机上的问题
问题1: 通过document.addEventListener("scroll",function(){})对页面滚动监听事件进行监听,但ios下$(document).scro ...
- ArcMap 导入自定义样式Symbols
管网的图例里有一些自定义的样式,这些在ArcMap中找不到,找到的也不合适,所以只能自己动手制作. 1. 菜单 Customize --> Style Manager 2 . 创建新的Style ...
- Android开发菜单以及子菜单
package com.example.androidtest; import android.app.Activity; import android.os.Bundle; import andro ...
- JS 百度地图路书---动态路线
JS 百度地图路书---动态路线 <!DOCTYPE html> <head> <meta http-equiv="Content-Type" con ...
- 巴塞尔问题(Basel problem)的多种解法
巴塞尔问题(Basel problem)的多种解法——怎么计算\frac{1}{1^2}+\frac{1}{2^2}+\frac{1}{3^2}+\cdots112+122+132+⋯ ? (PS:本 ...
- 菜不成声 的 ac自动机 刷题记录
HDU2222 Keywords Search 模板题.数组开小了结果会T... 代码 #include <bits/stdc++.h> #define nmax 10010 using ...
- cmd 下sql语句及结果
Microsoft Windows [版本 10.0.14393](c) 2016 Microsoft Corporation.保留所有权利. C:\Users\李长青>mysql -uroot ...
- ORA-12638: 身份证明检索失败
PLSQL 连接Oracle时提示 “ORA-12638: 身份证明检索失败” 错误, 但是开发IDE可以正常连接,DataGrid 可以正常连接,所以确定是本地设置问题. 网上搜了一下,说是因为Or ...
- Hadoop 集群ssh免密登录设置
0.安装命令: yum list installed | grep openssh-server 命令检查ssh安装有没有安装,如果查询出来有就表示安装了,否则反之 通过 yum install op ...