首页编程java编程java中可见性修饰什么(面向对象程序中,继承,“可见性”是什么意思)

java中可见性修饰什么(面向对象程序中,继承,“可见性”是什么意思)

编程之家2023-10-11101次浏览

大家好,今天给各位分享java中可见性修饰什么的一些知识,其中也会对面向对象程序中,继承,“可见性”是什么意思进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!

java中可见性修饰什么(面向对象程序中,继承,“可见性”是什么意思)

面向对象程序中,继承,“可见性”是什么意思

Java名词解释

Abstract class抽象类:抽象类是不允许实例化的类,因此一般它需要被进行扩展继承。

Abstract method抽象方法:抽象方法即不包含任何功能代码的方法。

java中可见性修饰什么(面向对象程序中,继承,“可见性”是什么意思)

Access modifier访问控制修饰符:访问控制修饰符用来修饰Java中类、以及类的方法和变量的访问控制属性。

Anonymous class匿名类:当你需要创建和使用一个类,而又不需要给出它的名字或者再次使用的使用,就可以利用匿名类。

Anonymous inner classes匿名内部类:匿名内部类是没有类名的局部内部类。

java中可见性修饰什么(面向对象程序中,继承,“可见性”是什么意思)

API应用程序接口:提供特定功能的一组相关的类和方法的集合。

Array数组:存储一个或者多个相同数据类型的数据结构,使用下标来访问。在Java中作为对象处理。

Automatic variables自动变量:也称为方法局部变量method local variables,即声明在方法体中的变量。

AWT抽象窗口工具集:一个独立的API平台提供用户界面功能。

Base class基类:即被扩展继承的类。

Blocked state阻塞状态:当一个线程等待资源的时候即处于阻塞状态。阻塞状态不使用处理器资源

Call stack调用堆栈:调用堆栈是一个方法列表,按调用顺序保存所有在运行期被调用的方法。

Casting类型转换:即一个类型到另一个类型的转换,可以是基本数据类型的转换,也可以是对象类型的转换。

char字符:容纳单字符的一种基本数据类型。

Child class子类:见继承类Derived class

Class类:面向对象中的最基本、最重要的定义类型。

Class members类成员:定义在类一级的变量,包括实例变量和静态变量。

Class methods类方法:类方法通常是指的静态方法,即不需要实例化类就可以直接访问使用的方法。

Class variable类变量:见静态变量Static variable

Collection容器类:容器类可以看作是一种可以储存其他对象的对象,常见的容器类有Hashtables和Vectors。

Collection interface容器类接口:容器类接口定义了一个对所有容器类的公共接口。

Collections framework容器类构架:接口、实现和算法三个元素构成了容器类的架构。

Constructor构造函数:在对象创建或者实例化时候被调用的方法。通常使用该方法来初始化数据成员和所需资源。

Containers容器:容器是一种特殊的组件,它可以容纳其他组件。

Declaration声明:声明即是在源文件中描述类、接口、方法、包或者变量的语法。

Derived class继承类:继承类是扩展继承某个类的类。

Encapsulation封装性:封装性体现了面向对象程序设计的一个特性,将方法和数据组织在一起,隐藏其具体实现而对外体现出公共的接口。

Event classes事件类:所有的事件类都定义在java.awt.event包中。

Event sources事件源:产生事件的组件或对象称为事件源。事件源产生事件并把它传递给事件监听器event listeners。

Exception异常:异常在Java中有两方面的意思。首先,异常是一种对象类型。其次,异常还指的是应用中发生的一种非标准流程情况,即异常状态。

Extensibility扩展性:扩展性指的是面向对象程序中,不需要重写代码和重新设计,能容易的增强源设计的功能。

Finalizer收尾:每个类都有一个特殊的方法finalizer,它不能被直接调用,而被JVM在适当的时候调用,通常用来处理一些清理资源的工作,因此称为收尾机制。

Garbage collection垃圾回收机制:当需要分配的内存空间不再使用的时候,JVM将调用垃圾回收机制来回收内存空间。

Guarded region监控区域:一段用来监控错误产生的代码。

Heap堆:Java中管理内存的结构称作堆。

Identifiers标识符:即指定类、方法、变量的名字。注意Java是大小写敏感的语言。

Import statement引入语法:引入语法允许你可以不使用某个类的全名就可以参考这个类。

Inheritance继承:继承是面向对象程序设计的重要特点,它是一种处理方法,通过这一方法,一个对象可以获得另一个对象的特征。

Inner classes内部类:内部类与一般的类相似,只是它被声明在类的内部,或者甚至某个类方法体中。

Instance实例:类实例化以后成为一个对象。

Instance variable实例变量:实例变量定义在对象一级,它可以被类中的任何方法或者其他类的中方法访问,但是不能被静态方法访问。

Interface接口:接口定义的是一组方法或者一个公共接口,它必须通过类来实现。

Java source file Java源文件:Java源程序包含的是Java程序语言计算机指令。

Java Virtual Machine(JVM) Java虚拟机:解释和执行Java字节码的程序,其中Java字节码由Java编译器生成。

javac Java编译器:Javac是Java编译程序的名称。

JVM Java虚拟机:见Java虚拟机

Keywords关键字:即Java中的保留字,不能用作其他的标识符。

Layout managers布局管理器:布局管理器是一些用来负责处理容器中的组件布局排列的类。

Local inner classes局部内部类:在方法体中,或者甚至更小的语句块中定义的内部类。

Local variable局部变量:在方法体中声明的变量

Member inner classes成员内部类:定义在封装类中的没有指定static修饰符的内部类。

Members成员:类中的元素,包括方法和变量。

Method方法:完成特定功能的一段源代码,可以传递参数和返回结果,定义在类中。

Method local variables方法局部变量:见自动变量Automatic variables

Modifier修饰符:用来修饰类、方法或者变量行为的关键字。

Native methods本地方法:本地方法是指使用依赖平台的语言编写的方法,它用来完成Java无法处理的某些依赖于平台的功能。

Object对象:一旦类实例化之后就成为对象。

Overloaded methods名称重载方法:方法的名称重载是指同一个类中具有多个方法,使用相同的名称而只是其参数列表不同。

Overridden methods覆盖重载方法:方法的覆盖重载是指父类和子类使用的方法采用同样的名称、参数列表和返回类型。

Package包:包即是将一些类聚集在一起的一个实体。

Parent class父类:被其他类继承的类。也见基类。

Private members私有成员:私有成员只能在当前类被访问,其他任何类都不可以访问之。

Public members公共成员:公共成员可以被任何类访问,而不管该类属于那个包。

Runtime exceptions运行时间异常:运行时间异常是一种不能被你自己的程序处理的异常。通常用来指示程序BUG。

Source file源文件:源文件是包含你的Java代码的一个纯文本文件。

Stack trace堆栈轨迹:如果你需要打印出某个时间的调用堆栈状态,你将产生一个堆栈轨迹。

Static inner classes静态内部类:静态内部类是内部类最简单的形式,它于一般的类很相似,除了被定义在了某个类的内部。

Static methods静态方法:静态方法声明一个方法属于整个类,即它可以不需要实例化一个类就可以通过类直接访问之。

Static variable静态变量:也可以称作类变量。它类似于静态方法,也是可以不需要实例化类就可以通过类直接访问。

Superclass超类:被一个或多个类继承的类。

Synchronized methods同步方法:同步方法是指明某个方法在某个时刻只能由一个线程访问。

Thread线程:线程是一个程序内部的顺序控制流。

Time-slicing时间片:调度安排线程执行的一种方案。

Variable access变量访问控制:变量访问控制是指某个类读或者改变一个其他类中的变量的能力。

Visibility可见性:可见性体现了方法和实例变量对其他类和包的访问控制。

容器:充当中间件的角色

WEB容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET直接更容器中的环境变量接口交互,不必关注其它系统问题。主要有WEB服务器来实现。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。该容器提供的接口严格遵守J2EE规范中的WEB APPLICATION标准。我们把遵守以上标准的WEB服务器就叫做J2EE中的WEB容器。

EJB容器:Enterprise java bean容器。更具有行业领域特色。他提供给运行在其中的组件EJB各种管理功能。只要满足J2EE规范的EJB放入该容器,马上就会被容器进行高效率的管理。并且可以通过现成的接口来获得系统级别的服务。例如邮件服务、事务管理。

WEB容器和EJB容器在原理上是大体相同的,更多的区别是被隔离的外界环境。WEB容器更多的是跟基于HTTP的请求打交道。而EJB容器不是。它是更多的跟数据库、其它服务打交道。但他们都是把与外界的交互实现从而减轻应用程序的负担。例如SERVLET不用关心HTTP的细节,直接引用环境变量session,request,response就行、EJB不用关心数据库连接速度、各种事务控制,直接由容器来完成。

RMI/IIOP:远程方法调用/internet对象请求中介协议,他们主要用于通过远程调用服务。例如,远程有一台计算机上运行一个程序,它提供股票分析服务,我们可以在本地计算机上实现对其直接调用。当然这是要通过一定的规范才能在异构的系统之间进行通信。RMI是JAVA特有的。

JNDI:JAVA命名目录服务。主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能。

JMS:JAVA消息服务。主要实现各个应用程序之间的通讯。包括点对点和广播。

JAVAMAIL:JAVA邮件服务。提供邮件的存储、传输功能。他是JAVA编程中实现邮件功能的核心。相当MS中的EXCHANGE开发包。

JTA:JAVA事务服务。提供各种分布式事务服务。应用程序只需调用其提供的接口即可。

JAF:JAVA安全认证框架。提供一些安全控制方面的框架。让开发者通过各种部署和自定义实现自己的个性安全控制策略。

EAI:企业应用集成。是一种概念,从而牵涉到好多技术。J2EE技术是一种很好的集成实现。

java中public什么意思

public公有的是java的访问修饰符!

看下访问修饰符

1.public(公有的):可以被该类的和非该类的任何成员访问。

2.private(私有的):仅仅可以被该类的成员访问,任何非该类的成员一概不能访问。(主要是隐藏数据来保证数据的安全性)

3.protected(保护的):仅仅可以被子类和类本身还有同一个包里的类访问

java锁的可见性的是怎么保证的

单例类在Java开发者中非常常用,但是它给初级开发者们造成了很多挑战。他们所面对的其中一个关键挑战是,怎样确保单例类的行为是单例?也就是说,无论任何原因,如何防止单例类有多个实例。在整个应用生命周期中,要保证只有一个单例类的实例被创建,双重检查锁(Double checked locking of Singleton)是一种实现方法。顾名思义,在双重检查锁中,代码会检查两次单例类是否有已存在的实例,一次加锁一次不加锁,一次确保不会有多个实例被创建。顺便提一下,在JDK1.5中,Java修复了其内存模型的问题。在JDK1.5之前,这种方法会有问题。本文中,我们将会看到怎样用Java实现双重检查锁的单例类,为什么Java 5之前的版本双重检查锁会有问题,以及怎么解决这个问题。顺便说一下,这也是重要的面试要点,我曾经在金融业和服务业的公司面试被要求手写双重检查锁实现单例模式、相信我,这很棘手,除非你清楚理解了你在做什么。你也可以阅读我的完整列表“单例模式设计问题”来更好的准备面试。

为什么你需要双重检查锁来实现单例类?

一个常见情景,单例类在多线程环境中违反契约。如果你要一个新手写出单例模式,可能会得到下面的代码:

private static Singleton _instance;

public static Singleton getInstance(){

if(_instance== null){

_instance= new Singleton();

}

return _instance;

}

然后,当你指出这段代码在超过一个线程并行被调用的时候会创建多个实例的问题时,他很可能会把整个getInstance()方法设为同步(synchronized),就像我们展示的第二段示例代码getInstanceTS()方法一样。尽管这样做到了线程安全,并且解决了多实例问题,但并不高效。在任何调用这个方法的时候,你都需要承受同步带来的性能开销,然而同步只在第一次调用的时候才被需要,也就是单例类实例创建的时候。这将促使我们使用双重检查锁模式(double checked locking pattern),一种只在临界区代码加锁的方法。程序员称其为双重检查锁,因为会有两次检查 _instance== null,一次不加锁,另一次在同步块上加锁。这就是使用Java双重检查锁的示例:

public static Singleton getInstanceDC(){

if(_instance== null){// Single Checked

synchronized(Singleton.class){

if(_instance== null){// Double checked

_instance= new Singleton();

}

}

}

return _instance;

}

这个方法表面上看起来很完美,你只需要付出一次同步块的开销,但它依然有问题。除非你声明_instance变量时使用了volatile关键字。没有volatile修饰符,可能出现Java中的另一个线程看到个初始化了一半的_instance的情况,但使用了volatile变量后,就能保证先行发生关系(happens-before relationship)。对于volatile变量_instance,所有的写(write)都将先行发生于读(read),在Java 5之前不是这样,所以在这之前使用双重检查锁有问题。现在,有了先行发生的保障(happens-before guarantee),你可以安全地假设其会工作良好。另外,这不是创建线程安全的单例模式的最好方法,你可以使用枚举实现单例模式,这种方法在实例创建时提供了内置的线程安全。另一种方法是使用静态持有者模式(static holder pattern)。

/*

* A journey to write double checked locking of Singleton class in Java.

*/

class Singleton{

private volatile static Singleton _instance;

private Singleton(){

// preventing Singleton object instantiation from outside

}

/*

* 1st version: creates multiple instance if two thread access

* this method simultaneously

*/

public static Singleton getInstance(){

if(_instance== null){

_instance= new Singleton();

}

return _instance;

}

/*

* 2nd version: this definitely thread-safe and only

* creates one instance of Singleton on concurrent environment

* but unnecessarily expensive due to cost of synchronization

* at every call.

*/

public static synchronized Singleton getInstanceTS(){

if(_instance== null){

_instance= new Singleton();

}

return _instance;

}

/*

* 3rd version: An implementation of double checked locking of Singleton.

* Intention is to minimize cost of synchronization and improve performance,

* by only locking critical section of code, the code which creates instance of Singleton class.

* By the way this is still broken, if we don't make _instance volatile, as another thread can

* see a half initialized instance of Singleton.

*/

public static Singleton getInstanceDC(){

if(_instance== null){

synchronized(Singleton.class){

if(_instance== null){

_instance= new Singleton();

}

}

}

return _instance;

}

}

这就是本文的所有内容了。这是个用Java创建线程安全单例模式的有争议的方法,使用枚举实现单例类更简单有效。我并不建议你像这样实现单例模式,因为用Java有许多更好的方式。但是,这个问题有历史意义,也教授了并发是如何引入一些微妙错误的。正如之前所说,这是面试中非常重要的一点。在去参加任何Java面试之前,要练习手写双重检查锁实现单例类。这将增强你发现Java程序员们所犯编码错误的洞察力。另外,在现在的测试驱动开发中,单例模式由于难以被模拟其行为而被视为反模式(anti pattern),所以如果你是测试驱动开发的开发者,最好避免使用单例模式。

关于java中可见性修饰什么,面向对象程序中,继承,“可见性”是什么意思的介绍到此结束,希望对大家有所帮助。

java 锁为什么需要对象(java 中为什么引用外部类的变量和方法都要是final内型 的)java中put什么意思 java map .put 方法