美文网首页
Java学习笔记2

Java学习笔记2

作者: L1DAwE1 | 来源:发表于2018-03-04 22:38 被阅读0次

Java常用修饰符

1、访问修饰符

(1)private
使用对象:变量、方法。 注意:不能修饰类(外部类)

私有访问修饰符是最严格的访问级别,所以被声明为 private的方法、变量和构造方法只能被所属类访问,并且类(外部类)和接口不能声明为 private。
(注意:一般的类是不能用private修饰,类的可见性最少是包可见的,也就是默认的,不加任何修饰。但是有一种特殊的情况请你一定要记住,内部类是可以用private修饰的!不让类以外的其他类访问!)
声明为私有访问类型的变量只能通过类中公共的 getter 方法被外部类访问。
private 访问修饰符的使用主要用来隐藏类的实现细节和保护类的数据。
构造方法可以用private修饰,常用在单例模式中

(2)public
使用对象:类、接口、变量、方法

被声明为 public 的类、方法、构造方法和接口能够被任何其他类访问。
如果几个相互访问的 public 类分布在不同的包中,则需要导入相应 public 类所在的包。由于类的继承性,类所有的公有方法和变量都能被其子类继承。
Java 程序的 main() 方法必须设置成公有的,否则,Java 解释器将不能运行该类。

package 的作用就是 c++ 的 namespace 的作用,防止名字相同的类产生冲突。Java 编译器在编译时,直接根据 package 指定的信息直接将生成的 class 文件生成到对应目录下。如 package aaa.bbb.ccc 编译器就将该 .java 文件下的各个类生成到 ./aaa/bbb/ccc/ 这个目录。
import 是为了简化使用 package 之后的实例化的代码。假设 ./aaa/bbb/ccc/ 下的 A 类,假如没有 import,实例化A类为:new aaa.bbb.ccc.A(),使用 import aaa.bbb.ccc.A 后,就可以直接使用 new A() 了,也就是编译器匹配并扩展了 aaa.bbb.ccc. 这串字符串。

(3)protected
使用对象:变量、方法。 注意:不能修饰类(外部类)

被声明为 protected 的变量、方法和构造器能被同一个包中的任何其他类访问,也能够被不同包中的子类访问。
protected 访问修饰符不能修饰类(外部类)和接口,方法和成员变量能够声明为 protected,但是接口的成员变量和成员方法不能声明为 protected。
子类能访问 protected 修饰符声明的方法和变量,这样就能保护不相关的类使用这些方法和变量。

(4)默认访问修饰符-不使用任何关键字
使用对象:类、接口、变量、方法

使用默认访问修饰符声明的变量和方法,对同一个包内的类是可见的。接口里的变量都隐式声明为 public static final,而接口里的方法默认情况下访问权限为 public

访问修饰符权限

注意:访问控制和继承

请注意以下方法继承的规则:

父类中声明为 public 的方法在子类中也必须为 public。
父类中声明为 protected 的方法在子类中要么声明为 protected,要么声明为 public,不能声明为 private。
父类中声明为 private 的方法,不能够被继承。

首先,子类继承父类的访问修饰符要比父类的更大,也就是更加开放,假如我父类是protected修饰的,其子类只能是protected或者public,绝对不能是friendly(默认的访问范围)或者private,当然使用private就不是继承了。其次,还要注意的是,继承当中子类抛出的异常必须是父类抛出的异常的子异常,或者子类抛出的异常要比父类抛出的异常要少。

2、非访问修饰符

为了实现一些其他的功能,Java 也提供了许多非访问修饰符。

static 修饰符,用来修饰类方法和类变量。
final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
abstract 修饰符,用来创建抽象类和抽象方法。
synchronized 和 volatile 修饰符,主要用于线程的编程。

(1)static

静态变量:
static 关键字用来声明独立于对象的静态变量,无论一个类实例化多少对象,它的静态变量只有一份拷贝。 静态变量也被称为类变量。局部变量不能被声明为 static 变量。
静态方法:
static 关键字用来声明独立于对象的静态方法。静态方法不能使用类的非静态变量。静态方法从参数列表得到数据,然后计算这些数据。

注意:static修饰符可以用来修饰内部类

Java里面static一般用来修饰成员变量或函数。但有一种特殊用法是用static修饰内部类普通类是不允许声明为静态的,只有内部类才可以。被static修饰的内部类可以直接作为一个普通类来使用,而不需实例一个外部类(见如下代码)

public class Test {
    public static class InnerClass {
        public InnerClass() {
            System.out.println("============= 我是一个内部类'InnerClass' =============");
        }
    }
}
public class TestStatic {
    public static void main(String[] args) {
        // 不需要new一个Test
        new Test.InnerClass();
    }
}

如果没有用static修饰InterClass,则只能按如下方式调用:

public class Test {
    public class InnerClass {
        public InnerClass() {
            System.out.println("============= 我是一个内部类'InnerClass' =============");
        }
    }
}
public class TestStatic {
    public static void main(String[] args) {
        // 需要先new一个Test
        Test t= new Test();
        t.new InnerClass();
    }
JAVA中八种基本数据类型的默认值.png

相关文章

  • java学习笔记-日志篇

    java学习笔记-日志篇-目录 java日志篇(1)-日志概述 java日志篇(2)-JUL(java.util....

  • nio

    参考文章 Java Nio Java NIO学习笔记 - NIO客户端时序图 Java NIO学习笔记 - NIO...

  • Java 学习笔记(13)——lambda 表达式

    title: Java 学习笔记(11)——lambda 表达式tags: [Java 基础, 学习笔记, 函数式...

  • java io

    参考Java IO学习笔记(一):File类Java IO学习笔记(二):RandomAccessFile类Jav...

  • Java学习笔记

    Java学习笔记 day1 public class Hello2 { ​ public static voi...

  • 文章目录

    Markdown学习 Markdown学习 Java学习 Servlet学习笔记 Java问题 Tomcat问题修...

  • Java学习笔记2

    每一门编程语言的一个程序都是Hello world!那Java也不例外。 那么编译运行一个程序的过程是什么呢? 在...

  • Java学习笔记2

    下面程序结果 Demo2_Student静态代码块我是main方法Student 静态代码块Student 构造代...

  • Java学习笔记_2

    多线程。线程是进程中的一个执行单元(执行路径),可以并发。System.gc();申请启动垃圾回收器,垃圾回收器比...

  • Java学习笔记2

    Java常用修饰符 1、访问修饰符 (1)private 使用对象:变量、方法。 注意:不能修饰...

网友评论

      本文标题:Java学习笔记2

      本文链接:https://www.haomeiwen.com/subject/qsjubxtx.html