一、访问修饰符

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基础之 修饰符的更多相关文章

  1. java基础之修饰符和内部类

    1.java修饰符 /* 修饰符: 权限修饰符:private,默认的,protected,public 状态修饰符:static,final 抽象修饰符:abstract 类: 权限修饰符:默认修饰 ...

  2. Java基础-访问修饰符

    访问修饰符 default (即缺省,什么也不写): 在同一包内可见,不使用任何修饰符.使用对象:类.接口.变量.方法. private : 在同一类内可见.使用对象:变量.方法. 注意:不能修饰类( ...

  3. JAVA基础_修饰符

    引言:Java的修饰符根据修饰的对象不同,分为类修饰符.方法修饰符.变量修饰符,其中每种修饰符又分为访问控制修饰符和非访问控制修饰符.访问控制存在的原因:a.让客户端程序员无法触及他们不应该触及的部分 ...

  4. Java 基础 面向对象修饰符和自定义数据类型

    不同修饰符使用细节 常用来修饰类.方法.变量的修饰符如下: public 权限修饰符,公共访问, 类,方法,成员变量 protected 权限修饰符,受保护访问, 方法,成员变量 默认什么也不写 也是 ...

  5. 4. java基础之修饰符

    其他修饰符 public 可以修饰属性.方法.构造方法.类 protected 可以修饰属性.方法.构造方法 default 可以修饰属性.方法.构造方法.类 private 可以修饰属性.方法.构造 ...

  6. java中的修饰符和基本数据类型

    1.java中的修饰符 java中的修饰符主要是用来对类资源进行一个权限控制,上面表格表现的很清晰,无需多言. 2.java中的基本数据类型 java中的数据类型分为引用类型和基本类型.基本数据类型有 ...

  7. Java中的 修饰符

    java中的修饰符分为类修饰符,字段修饰符,方法修饰符. 根据功能的不同,主要分为以下几种. 1.权限访问修饰符  访问权限的控制常被称为具体实现的隐藏 把数据和方法包进类中,以及具体实现的隐藏,常共 ...

  8. 深入理解Java的protected修饰符

    其实Java的protected修饰符,权限定义的很微妙,大致有以下几种: (1)protected控制符用于修饰方法和成员变量: (2)一个类的protected方法或成员变量,在包外是不能通过该类 ...

  9. java访问权限修饰符

    作用域 当前类 同一package 子孙类 其他package public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ × × × ja ...

随机推荐

  1. selenium等待机制

    等待机制 ​ 因为你要查找的标签由于网速等原因迟迟没有加载出来,你就直接获取这个标签,很明显是报错,现有的简单粗暴的解决办法就是time.sleep(3),睡几秒,也就是设置线程等待,等这个标签加载出 ...

  2. iframe在iphone手机上的问题

    问题1: 通过document.addEventListener("scroll",function(){})对页面滚动监听事件进行监听,但ios下$(document).scro ...

  3. ArcMap 导入自定义样式Symbols

    管网的图例里有一些自定义的样式,这些在ArcMap中找不到,找到的也不合适,所以只能自己动手制作. 1. 菜单 Customize --> Style Manager 2 . 创建新的Style ...

  4. Android开发菜单以及子菜单

    package com.example.androidtest; import android.app.Activity; import android.os.Bundle; import andro ...

  5. JS 百度地图路书---动态路线

    JS 百度地图路书---动态路线 <!DOCTYPE html> <head> <meta http-equiv="Content-Type" con ...

  6. 巴塞尔问题(Basel problem)的多种解法

    巴塞尔问题(Basel problem)的多种解法——怎么计算\frac{1}{1^2}+\frac{1}{2^2}+\frac{1}{3^2}+\cdots112+122+132+⋯ ? (PS:本 ...

  7. 菜不成声 的 ac自动机 刷题记录

    HDU2222 Keywords Search 模板题.数组开小了结果会T... 代码 #include <bits/stdc++.h> #define nmax 10010 using ...

  8. cmd 下sql语句及结果

    Microsoft Windows [版本 10.0.14393](c) 2016 Microsoft Corporation.保留所有权利. C:\Users\李长青>mysql -uroot ...

  9. ORA-12638: 身份证明检索失败

    PLSQL 连接Oracle时提示 “ORA-12638: 身份证明检索失败” 错误, 但是开发IDE可以正常连接,DataGrid 可以正常连接,所以确定是本地设置问题. 网上搜了一下,说是因为Or ...

  10. Hadoop 集群ssh免密登录设置

    0.安装命令: yum list installed | grep openssh-server 命令检查ssh安装有没有安装,如果查询出来有就表示安装了,否则反之 通过 yum install op ...