静态,final,接口

一:static   static: 静态的.   1. 若需要一个类的多个对象共享一个变量,则该变量需要使用 static 修饰.
  2. 因为 static 修饰的变量为类的所有的实例所共享,所以 static 成员不属于某个类的实例, 而属于整个类.
     所以在访问权限允许的情况下,可以使用 "类名." 直接访问静态成员(成员包括属性和方法).   3.
注意: 在静态方法里只能直接调用同类中其它的静态成员(包括变量和方法),而不能直接访问类中的非静态成员.     
这是因为,对于非静态的方法和变量,需要先创建类的实例对象后才可使用,而静态方法在使用前不用创建任何对象.   4. 同 3 的道理:
静态方法不能以任何方式引用this和super关键字.   5. 非静态方法中可以直接来访问类的静态成员.   6. main()
方法是静态的,因此JVM在执行main方法时不创建main方法所在的类的实例对象.   7. 静态初始化指对类的静态属性进行初始化.  
  7.1 不应该在构造器中对静态成员进行初始化: 因为静态成员不因类的实例而改变.     7.2  
1   //非静态代码块: 先于构造器执行,每创建一个对象都会执行一次. 2   {
3       System.out.println("非静态代码块");
4   }  7.3   1   //静态代码块: 使用 static 修饰的代码块
2   //在类被加载时执行一次,且执行一次. 可以在静态代码块中对静态成员变量进行初始化. 3  
//先于非静态代码块和构造器执行. 4     static{
5         System.out.println("静态代码块");
6     }   8.
所谓类的单态设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例.   8.1 不能再类的外部通过 new
关键字的方式创建新的实例: 构造器私有化.   8.2 在类的内部创建实例.   8.3
为了让类的外部能够访问到类的内部创建的实例,该实例必须使用 static 修饰.   8.4 不能允许在类的外部修改内部创建的实例的引用.
SingleInstance.instance = null;        需要把该属性用
private 修饰.   8.5 为了让外部进行读,添加对应的 get 方法.

二:final

1. 在Java中声明类、属性和方法时,可使用关键字final来修饰。   2.
final标记的类不能被继承.提高安全性,提高程序的可读性。   3.
final标记的成员变量必须在声明的同时或在每个构造方法中显式赋值,否则编译出错。   4.
final标记的变量(成员变量或局部变量)即成为常量,只能赋值一次。   5. final标记的方法不能被子类重写,增加安全性。

三: 接口

抽象方法和常量的集合. 实际上接口更是一种规范!   1. 用 interface 来定义。   2. 接口中的所有成员变量都默认是由
public static final 修饰的.在声明变量时必须直接赋值.      常量标识符的书写要求:
字母都大写,多个单词使用 _ 连接.   3. 接口中的所有方法都默认是由public abstract修饰的.接口没有构造方法.   4.
实现接口使用 implements 关键字.若一个类既实现接口,有继承了父类, 需要把 extends 关键字放在前面,
     即先继承父类, 后实现多个接口.一个类可以实现多个无关的接口;若实现多个接口,使用,分割.   5.
接口也可以继承另一个接口,使用extends关键字.

静态,final,接口,布布扣,bubuko.com

时间: 2024-10-13 19:40:45

静态,final,接口的相关文章

封装,继承,多态,静态和接口

面对对象三大特性  封装  目的:让类更安全  做法:成员变量变为私有的,通过方法来间接操作成员变量,在方法里面加限制条件 继承  概念:子类可以继承父类的一切  方法重写:在子类里面对父类的方法进行重写  特点:单继承:一个子类只能有一个父类,一个父类可以派生出多个子类  override:重写  overload:重载,编译多态 class Ren { public $name; function say() { echo $this->name."正在讲话!"; } } c

Java中接口的特点

Java接口在1.8之后发生了重大变化.所以谈Java接口特点可以分为1.8版本之前和1.8版本之后. 1.8版本之前的特点: 接口里只能有静态全局常量和public修饰的抽象方法. 为了代码简洁,在接口中方法可以不用public和abstract修饰,但是编译后的方法仍然是public abstract类型的方法.全局常量也可以用public static fianl修饰,同样编译后仍然为public static final类型. 下面代码演示了一个如何定义一个1.8版本之前的接口: pub

接口2

如果一个方法参数为接口类型,意味着可以传递该接口的任何实现类对象. 接口中可以定义变量,其修饰符是public static final 接口可以继承接口.同时可以继承多接口.一个类实现一个接口,不但要实现该类接口定义的抽象方法,而且实现该接口中父类定义的方法. 抽象类和接口的区别: 1.抽象类和接口都不能直接实例化. 2.抽象类中可以有抽象的方法和具体的方法.但接口中只能有抽象的方法. 3.抽象类中定义的变量是普通属性.但接口中定义的变量是公共的静态的常量. 4.一个类只能继承一个抽象类,但可

Java中final、finally、finalize的区别(转)

Java中final.finally.finalize的区别与用法,困扰了不少学习者,下面我们就这个问题进行一些探讨,希望对大家的学习有所帮助. 方法/步骤 1 简单区别: final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承. finally是异常处理语句结构的一部分,表示总是执行. finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,供垃圾收集时的其他资源回收,例如关闭文件等. END 方法/步骤2 1 中等区别: 虽然这三

java——接口

接口 概述: 接口就是更深层次抽象类.接口中不能包含实现(静态常量除外). 语法: interface 接口名{接口成员;} // eg: public interface Comparable{ int comparaTo(Object other); } 说明: interface   :关键字,用于定义接口 接口成员 :抽象方法(不需要使用abstract关键字)和静态常量 作用: 模板:子类的约束(也可以理解为规则) **为了让类实现一个接口,通常需要一下两个步骤: 将类声明为实现给定的

[Effective Java 读书笔记] 第三章类和接口 第二十-二十一条

第二十条 用函数对象表示策略 函数指针(JAVA的函数指针,是指使用对象的引用来作为参数,传递给另一个对象的方法)主要用来实现策略模式,为了在JAVA中实现这种模式,要申明一个接口来表示该策略,并为每个具体策略申明一个实现了该接口的类. 如果这个策略只被执行一次,使用匿名类,如果重复使用,则通常实现为私有的静态成员类,并通过共有的静态final域导出(最后一个例子),其类型为该策略接口. 第二十一条 优先考虑静态成员类 嵌套类主要有四种:静态成员类,非静态成员类,匿名类,局部类 静态成员类,一般

[Effective Java 读书笔记] 第三章类和接口 第十二条

第十二条 使类和成员的可访问性最小化 总得来说,我们应该尽量将成员的访问范围限制到最小!有利于解耦,开发.测试和优化都能够更加独立. 对于成员(域,方法,嵌套类和嵌套接口),有四种可能的访问级别,访问范围从小到大: 1. private,只有声明成员的类的内部才能访问 2. 包级私有的,声明成员的类所在的包内的任何类都可以访问,如果成员不显示声明访问级别,就是这种级别,所以也成为缺省访问级别 3.protected,声明成员的类及其子类可以访问,并且声明类所在包中的任何类也可以访问 4.publ

Effective Java 读书笔记之三 类和接口

一.使类和成员的可访问性最小化 1.尽可能地使每个类或者成员不被外界访问. 2.实例域决不能是共有的.包含公有可变域的类不是线程安全的. 3.除了公有静态final域的特殊情形之外,公有类都不应该包含公有域,并且确保公有静态final域所引用的对象不可变. 二.在公有类中使用访问方法而非公有域 1.如果类是包级私有的,或者是私有的嵌套类,直接暴露它的数据域并没有本质的错误. 2.公有类永远都不应该暴露可变的域. 三.使可变性最小化 不可变的类是指其实例不能被修改的类.为使类不可变,需要遵循以下五

final .....finally ...... 和Finalize ......区别

一.性质不同 (1)final为关键字: (2)finalize()为方法: (3)finally为为区块标志,用于try语句中: 二.作用 (1)final为用于标识常量的关键字,final标识的关键字存储在常量池中(在这里final常量的具体用法将在下面进行介绍): (2)finalize()方法在Object中进行了定义,用于在对象"消失"时,由JVM进行调用用于对对象进行垃圾回收,类似于C++中的析构函数:用户自定义时,用于释放对象占用的资源(比如进行I/0操作): (3)fi