复习java基础第一天
2014-04-29 17:36
288 查看
一:static
static: 静态的.
1. 若需要一个类的多个对象共享一个变量, 则该变量需要使用 static 修饰.
2. 因为 static 修饰的变量为类的所有的实例所共享, 所以 static 成员不属于某个类的实例, 而属于整个类.
所以在访问权限允许的情况下, 可以使用 "类名." 直接访问静态成员(成员包括属性和方法)
3. 注意: 在静态方法里只能直接调用同类中其它的静态成员(包括变量和方法),而不能直接访问类中的非静态成员.
这是因为,对于非静态的方法和变量,需要先创建类的实例对象后才可使用,而静态方法在使用前不用创建任何对象.
4. 同 3 的道理: 静态方法不能以任何方式引用this和super关键字.
5. 非静态方法中可以直接来访问类的静态成员.
6. main() 方法是静态的,因此JVM在执行main方法时不创建main方法所在的类的实例对象.
7. 静态初始化指对类的静态属性进行初始化.
7.1 不应该在构造器中对静态成员进行初始化: 因为静态成员不因类的实例而改变.
7.2
7.3
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关键字。
关于接口的提示:
1. 实现接口的类中必须提供接口中所有方法的具体实现内容。 若该类为抽象类, 另当别论.
2. 多个无关的类可以实现同一个接口
3. 与继承关系类似, 接口与实现类之间存在多态性
接口练习例子:
static: 静态的.
1. 若需要一个类的多个对象共享一个变量, 则该变量需要使用 static 修饰.
2. 因为 static 修饰的变量为类的所有的实例所共享, 所以 static 成员不属于某个类的实例, 而属于整个类.
所以在访问权限允许的情况下, 可以使用 "类名." 直接访问静态成员(成员包括属性和方法)
3. 注意: 在静态方法里只能直接调用同类中其它的静态成员(包括变量和方法),而不能直接访问类中的非静态成员.
这是因为,对于非静态的方法和变量,需要先创建类的实例对象后才可使用,而静态方法在使用前不用创建任何对象.
4. 同 3 的道理: 静态方法不能以任何方式引用this和super关键字.
5. 非静态方法中可以直接来访问类的静态成员.
6. main() 方法是静态的,因此JVM在执行main方法时不创建main方法所在的类的实例对象.
7. 静态初始化指对类的静态属性进行初始化.
7.1 不应该在构造器中对静态成员进行初始化: 因为静态成员不因类的实例而改变.
7.2
//非静态代码块: 先于构造器执行, 每创建一个对象都会执行一次. { System.out.println("非静态代码块"); }
7.3
//静态代码块: 使用 static 修饰的代码块 //在类被加载时执行一次. 且执行一次. 可以在静态代码块中对静态成员变量进行初始化. //先于非静态代码块和构造器执行. static{ System.out.println("静态代码块"); }
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关键字。
关于接口的提示:
1. 实现接口的类中必须提供接口中所有方法的具体实现内容。 若该类为抽象类, 另当别论.
2. 多个无关的类可以实现同一个接口
3. 与继承关系类似, 接口与实现类之间存在多态性
接口练习例子:
public class TestInterface { public static void main(String[] args) { System.out.println(Dao.DAO_NAME); Dao dao = new DaoImpl(); ComparableCircle cc1 = new ComparableCircle(2); ComparableCircle cc2 = new ComparableCircle(7); System.out.println(cc1.compareTo(cc2)); } } interface Dao{ String DAO_NAME = "DAONAME"; void save(Object obj); Object get(); } interface Test{} interface Test2 extends Test{} class BaseDao{} class DaoImpl extends BaseDao implements Dao, Test{ @Override public Object get() { // TODO Auto-generated method stub return null; } @Override public void save(Object obj) { // TODO Auto-generated method stub } } class DaoImpl2 implements Dao{ @Override public void save(Object obj) { // TODO Auto-generated method stub } @Override public Object get() { // TODO Auto-generated method stub return null; } }
相关文章推荐
- Spring mvc 国际化支持已经UTF-8中文乱码问题的解决方案
- Struts2_访问Web元素
- JAVA字符串格式化-String.format()的使用(转)
- Eclipse安装Maven插件
- mysql数据库无法连接(JDBC)java.net.ConnectException: Connection timed out
- Spring的AOP简单介绍和常用配置(3)-事务配置
- Java 中线程安全的类
- JAVA中文件的读写处理
- MyEclipse无法编译,不生成class文件
- Java解析CSV文件
- java 中线程的实现方式的比较
- struts2
- 我们为什么需要Java EE 5.0?
- 九大因素让Java EE 6成为你的省钱法宝
- JAVA中使用split拆分以"|"为分隔符的字符串
- java ee5和java ee6的区别
- java类加载机制
- Struts2 filter vs interceptor vs listener 抄来的!!!
- Java EE 6引入的三大新技术之JAX-RS
- 【Java编程】Java中的字符串匹配