一、访问修饰符

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. Linux CURL的安装和使用

    --获得安装包,从网上直接下载或者其他途径,这里直接wget# wget http://curl.haxx.se/download/curl-7.17.1.tar.gz--解压到当前目录# tar - ...

  2. Codeforces Round #622(Div 2)C2. Skyscrapers (hard version)

    题目链接 : C2. Skyscrapers (hard version) 题目描述 : 与上一道题类似,只是数据范围变大, 5e5, 如果用我们原来的方法,铁定是超时的. 考察点 : 单调栈,贪心, ...

  3. powerdesigner两数据库对比

    1. powerdesigner两数据库对比 1.1. 问题 position属性不一致,但这并不影响两数据库的结构,我们不需要把它当警告显示出来 1.2. 解决办法

  4. .net core 简单定时程序

    using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; using Orleans; using S ...

  5. 你是个好人,但不是个好leader

    午餐时间,我翻看朋友圈,浏览到一条朋友A的最新动态,她刚创业半年多的公司因为资金周转不灵.项目搁浅.合伙人撤资等多方面原因,最终倒闭了. 朋友A有着多年的名企工作经验,985大学毕业,在学校时是学霸, ...

  6. linux查找含有xxx内容的文件

    find . -name *.json |xargs grep "6379" |awk '{print $1}'|uniq

  7. laravel打印查询sql

    方法一(此方法支持 select 语句,insert,delect,update不支持) : $sql = DB::table('my_table')->select()->tosql() ...

  8. Spring学习笔记-装配Bean-02

    什么是装配 创建应用对象之间写作关系的行为通常称为装配(wiring),这也是依赖注入(DI)的本质. Spring配置的可选方案 Spring提供了3中主要的装配机制: ● 在XML中进行显式配置. ...

  9. vs code使用指南

    https://blog.csdn.net/weixin_45601379/article/details/100550421

  10. JDBC没有导入驱动jar包