`
0428loveyu
  • 浏览: 30846 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

Java类修饰符

 
阅读更多

在Java中,可用于修饰类的修饰符(Modifier)有如下几类:

  • public、protected、(package)、private。这四个为访问修饰符。
  • abstract。 抽象类,不能被实例化。
  • static。静态类,只有一个实例。
  • final。限制类不能被继承。
  • strictfp。控制浮点类型为strict。
  • Annotations。标注。
下面具体介绍上面的前四种情况,strictfp和Annotations在这里不做介绍。

1. 访问控制符
这四个访问控制符用于限制类能被访问的范围,被public修饰的类在任何地方都可以使用。需要注意的是,public只能用于修饰top-level的类和member class。所谓top-level class,从形式上最直观的的理解就是在源代码中,它的生命是顶格开始的,不包含在任何其他类当中。member class也容易理解,我们一般说类的成员包括域和方法,其实在类当中,还可以包含许多其他内容,比如:
静态初始化块(static initialize block):static { ... }
实例初始化(instance): { ... }
再有就是member class,这些都是跟域和方法并列的。

更进一步,为了更清楚地了解Java语言中类有哪几种,我们对类进行一下划分,如下图所示:


top-level和member已经在上面说过,Nested类直观上来说,就是类的源码是在其他类之中的,内嵌在其他类里边。而在内嵌类当中,跟域和方法并列的类称为member class。member有可以分为static和non-static,被static修饰的member 就叫static nested class,而除了static nested class以为的其他所有nested class都称为inner class,包括non static member和其他不与类和方法并列的内嵌类,比如local class和anonymous,这两种类都是在block中声明的,区别在于anonymous没有类名,只能使用一次。

关于各种类型的class一个示例如下:
import java.lang.reflect.Modifier;

/**
 * @author Brandon B. Lin
 * 
 */
public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		printAllClassModifiers();

	}

	private static void printAllClassModifiers() {
		System.out.println(Modifier.classModifiers());

	}

	interface HelloWorld {
        public void greet();
        public void greetSomeone(String someone);
    }
	
	
	public void validatePhoneNumber() {

		// local class
		abstract class PhoneNumber {

		}
		
		// anonymous class
		HelloWorld frenchGreeting = new HelloWorld() {
			String name = "tout le monde";
            public void greet() {
                greetSomeone("tout le monde");
            }
            public void greetSomeone(String someone) {
                name = someone;
                System.out.println("Salut " + name);
            }
        };
		
		

	}

	// non static member class
	public abstract class NonStaticMember {

	}

	/**
	 * static 修饰class时只能修饰member class
	 */
	// static member class
	public abstract static class StaticMember {

	}
	
	
	/**
	 * protected and private用于修饰类的时候只能修饰member class
	 */
	protected abstract class TT {
		
	}
	
	private abstract class PP {
		
	}

}


看完class的分类,回到访问修饰符来。
protected这一修饰符用于修饰class时,只能修饰member class。所以它的使用范围就包括它的外部类(因为只能修饰member)所在的包以及外部类的子类。
private修饰class时一样只能修饰member class,能使用它的只有它的外部类。当然也包括它本身。
没有访问控制符,也叫包可见。

2. 抽象类
抽象类用abstract修饰,但不是说没有abstract就不是抽象类,比如继承了抽象类但还有某些抽象方法没有实现。抽象类不能被实例化,它是介于接口(全部方法都是抽象的)和类(全部方法都不是抽象的)之间。关于抽象类有许多内容需要掌握,这里不展开。

3. static类
static一般而言表示只有一个副本,属于类而不输于某个实例,所有实例共享静态成员。static修饰类的时候也只能用于修饰member class,表示这一成员属于其外部类所有,外部类的实例共享这一成员类。

4. final类
被final修饰的类不能被继承。所以final和abstract不能同时出现。
另外,如果不想让自己的类被继承,另一种方式是将你的构造器设置为private,需要强调的是必须所有构造器都是private,如果你想彻底杜绝被继承的话。也就是说,必须让外界(除了本类之外的所有源代码中)无法对该类的构造器进行直接的调用(可以通过其他重载的构造器调用private的构造器,实现间接调用.也可以通过这个类的static方法创建对象)。也就是说,将所有构造函数声明为private,意味着只能在本类中实例化该类。但是在这个类之外,一样可以通过静态方法得到一个该类的对象。如果你没有显式提供任何构造器,那么就会使用默认的构造器,默认构造器是public的。总结一下,不让某个类被继承有两种方法,1)使用 final修饰该类 2)使用private的构造器。
对于第二种方式,可以通过如下步骤来达到目的
a. 提供自己的构造器,使得默认构造器消失。
b. 将所有构造器(如果重载的话)设为private。

分享到:
评论

相关推荐

    理解java中的类的各种权限修饰符

    ### 理解Java中的类的各种权限修饰符 在Java编程语言中,权限修饰符用于控制类、方法、变量等成员的访问级别。这有助于提高代码的安全性和封装性。本文将详细探讨Java中的五种权限修饰符:`public`、`protected`、`...

    Java访问修饰符

    Java 访问修饰符是 Java 编程语言中的一种重要机制,它控制着类、方法和变量的访问权限。访问修饰符可以分为四种:public、protected、private 和缺省(无访问修饰符)。 public 访问修饰符 public 访问修饰符是最...

    Java修饰符使用整理(含实例)

    Java 修饰符可以分为两大类:访问修饰符和非访问修饰符。访问修饰符包括 public、protected、default 和 private 四种,用于控制类、成员变量和方法的访问权限。非访问修饰符包括 final、static 和 abstract 三种,...

    Java类的修饰符、访问控制符

    Java语言中的类修饰符和访问控制符是编程中至关重要的概念,它们决定了代码的组织结构、访问权限和封装性。本实验旨在深入理解和熟练运用这些关键特性。 首先,Java类修饰符包括`public`, `private`, `protected`...

    JAVA访问修饰符大归纳

    根据 JAVA 访问修饰符的特性和使用范围,我们可以将其分为三类:修饰符类的访问修饰符、属性的访问修饰符和方法的修饰符。 一、修饰符类的访问修饰符 修饰符类的访问修飾符共有四种:默认、public、abstract 和...

    java修饰符介绍

    以下是对标题和描述中提及的Java修饰符及其相关知识点的详细介绍: 1. 类的访问控制修饰符: - **public**:公共访问修饰符,允许任何地方的代码访问该类或成员。这意味着类或方法可以在任何包中被调用。 - **...

    java常用的修饰符

    Java修饰符是编程中至关重要的概念,它们用于定义类、接口、变量和方法的访问权限、行为和特性。本文将详细介绍Java中常见的修饰符及其用途。 1. **类的修饰符** - **public**: 公共访问控制符,允许任何地方的...

    java 三个修饰符习题.zip

    这些修饰符用于定义类、接口、变量和方法的可访问性,是理解Java面向对象特性的重要组成部分。让我们深入探讨这三个修饰符的含义和用法。 1. `public`: `public`是最宽松的访问控制修饰符,表示没有任何限制,...

    java访问权限修饰符public.doc

    在 Java 语言中,访问权限修饰符是指用来限定类、成员变量和方法的可访问范围的关键字。访问权限修饰符分为四种:public、protected、friendly 和 private。每种修饰符都有其特定的访问权限和使用场景。 一、public...

    Java修饰符总结

    Java修饰符主要分为两大类:访问控制符和非访问控制符。其中,访问控制符用于控制类、方法和变量的可访问性范围,而非访问控制符则用于提供额外的功能,如抽象、静态、同步等。 #### 访问控制符 访问控制符包括`...

    Java访问修饰符大归类

    Java 中的访问修饰符可以分为三大类:类的访问修饰符、属性的访问修饰符和方法的访问修饰符。每种修饰符都有其特定的访问权限和用途。 类的访问修饰符 Java 中有四种类的访问修饰符: 1. 缺省(friendly):同一...

    第6章 Java语言中的修饰符.ppt

    Java语言中的修饰符是编程语法中的重要组成部分,它们用于定义类、接口、变量和方法的特性,从而控制访问权限、实现抽象概念、确保不可变性以及优化代码结构。本章将详细阐述Java中的主要修饰符。 首先,我们讨论...

    java修饰符

    ### Java修饰符详解 在Java编程中,修饰符(Modifiers)扮演着至关重要的角色,它们用于控制类、方法、变量等元素的可见性和行为。Java提供了两种主要类型的修饰符:访问控制修饰符和非访问控制修饰符。本文将深入...

    java常用修饰符.doc

    Java语言中的修饰符是编程中不可或缺的部分,它们用于指定类、接口、方法和变量的访问权限及特性。本文主要分析了Java中常见的访问修饰符(public、private、protected、friendly/default)以及非访问修饰符(final...

    Java修饰符demo

    本文将深入探讨Java修饰符的基础知识,包括访问修饰符、非访问修饰符以及它们在实际编程中的应用。 首先,我们来看访问修饰符。在Java中,有四种主要的访问修饰符: 1. **public**:公共访问修饰符,允许任何地方...

    SCJP java基础修饰符

    从给定的文件信息来看,我们深入探讨了Java语言中重要的修饰符概念,...总之,Java修饰符是掌握面向对象编程和有效利用类、方法、属性的关键。理解每种修饰符的作用和适用场景对于编写高质量、易于维护的代码至关重要。

    java修饰符的使用.pdf

    Java 中的类和方法的修饰符是 Java 语言的基础知识之一。Java 程序在定义类时,除了使用 class 关键字标识之外,还可以在 class 之前增加若干类的修饰符来修饰限定所定义的类的特性。类的修饰符分为访问控制符和非...

    Java修饰符总结[汇编].pdf

    Java修饰符总结[汇编].pdf

    Java修饰符详细解析

    Java修饰符详细解析 Java语言中,修饰符(Modifier)是一...Java修饰符是Java语言中一个非常重要的概念,它们决定了类、方法、变量的访问权限和行为。只有正确地使用修饰符,才能写出结构清晰、可维护性强的Java程序。

Global site tag (gtag.js) - Google Analytics