博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
复习java基础第一天
阅读量:7102 次
发布时间:2019-06-28

本文共 2800 字,大约阅读时间需要 9 分钟。

一: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关键字.
  
关于接口的提示:
  1. 实现接口的类中必须提供接口中所有方法的具体实现内容.若该类为抽象类,另当别论. 
  2. 多个无关的类可以实现同一个接口.

  3. 与继承关系类似,接口与实现类之间存在多态性 .

接口练习例子:

1 public class TestInterface { 2  3     public static void main(String[] args) { 4          5        System.out.println(Dao.DAO_NAME); 6          7         Dao dao = new DaoImpl(); 8              9         ComparableCircle cc1 = new ComparableCircle(2);10         ComparableCircle cc2 = new ComparableCircle(7);11         12        System.out.println(cc1.compareTo(cc2)); 13     }14 }15 16 interface Dao{17     18     String DAO_NAME = "DAONAME";19     20     void save(Object obj);21     22     Object get();23 }24 25 interface Test{}26 27 interface Test2 extends Test{}28 29 class BaseDao{}30 31 class DaoImpl extends BaseDao implements Dao, Test{32 33     @Override34     public Object get() {35         // TODO Auto-generated method stub36         return null;37     }38 39     @Override40     public void save(Object obj) {41         // TODO Auto-generated method stub42     }43 }44 45 class DaoImpl2 implements Dao{46 47     @Override48     public void save(Object obj) {49         // TODO Auto-generated method stub    50     }51 52     @Override53     public Object get() {54         // TODO Auto-generated method stub55         return null;56     }57 }

 

转载于:https://www.cnblogs.com/shellway/p/3699857.html

你可能感兴趣的文章
目标检測的图像特征提取之(一)HOG特征
查看>>
MySQL-EXPLAIN用法详解
查看>>
du 命令
查看>>
jdbctemplate中的query(sql,params,mapper)与queryForList(sql,params,class)区别
查看>>
C++ 虚函数表解析
查看>>
Responder一点也不神秘————iOS用户响应者链完全剖析
查看>>
Type mismatch: cannot convert from java.sql.PreparedStatement to com.mysql.jdbc.PreparedStatement
查看>>
SharePoint 2013 工作流平台的选项不可用
查看>>
thinkphp 重定向redirect
查看>>
Builder创建者模式
查看>>
安卓应用使用QQ登录的申请流程
查看>>
Android批量图片加载经典系列——采用二级缓存、异步加载网络图片
查看>>
redis 数据类型详解 以及 redis适用场景场合
查看>>
RAC安装重新运行root.sh
查看>>
Mac下面的SecureCRT(附破解方案) 更新到最新的7.3.2(转)
查看>>
H5版俄罗斯方块(5)---需求演进和产品迭代
查看>>
Java多线程有哪几种实现方式? Java中的类如何保证线程安全? 请说明ThreadLocal的用法和适用场景...
查看>>
工作队列(workqueue) create_workqueue/schedule_work/queue_work
查看>>
size_t、ptrdiff_t【转】
查看>>
Python第十三天 django 1.6 导入模板 定义数据模型 访问数据库 GET和POST方法 SimpleCMDB项目 urllib模块 urllib2模块 ...
查看>>