黑马程序员----基础知识要点总结
来源:互联网 发布:网络交换机 编辑:程序博客网 时间:2024/06/11 10:01
---------------------- 黑马程序员 Android培训、期待与您交流! ----------------------
1、封装
概念:隐藏对象的属性与实现细节,仅提供公共访问方式
好处:将变化隔离,便于使用,提高重用性安全性
原则:将不需要公开对外提供的内容都隐藏起来,把属性都隐藏起来,提供公共方法对其进行访问
例子:
------------------------------------------------------------------------------------------------------------------------------------
2、单例设计模式(极为重要)
因为之前写过单例的一篇笔记,索性就把代码贴过来了
http://blog.csdn.net/xiaoziqingkong/article/details/39401041
饿汉式与懒汉式代码均需掌握。贴一下
//饿汉式
class Single{
private Single(){} //私有化构造函数。
private static Single s = newSingle(); //创建私有并静态的本类对象。
public static Single getInstance(){ //定义公有并静态的方法,返回该对象。
return s;
}
}
//懒汉式:延迟加载方式。
class Single2{
private Single2(){}
private static Single2 s = null;
public static Single2 getInstance(){
if(s==null)
s = new Single2();
return s;
}
}
------------------------------------------------------------------------------------------------------------------------------------
维护变得简单;
扩展变得容易。
构造方法不能被继承!一个类得到构造构造方法只有两种途径:自定义构造方法;使用JVM分配的缺省构造方法。但是,可以在子类中访问父类的构造方法。
注意:
子类中所有的构造函数都会默认访问父类中的空参数的构造函数,因为每一个子类构造内第一行都有默认的语句super();
如果父类中没有空参数的构造函数,那么子类的构造函数内,必须通过super语句指定要访问的父类中的构造函数。
如果子类构造函数中用this来指定调用子类自己的构造函数,那么被调用的构造函数也一样会访问父类中的构造函数。
------------------------------------------------------------------------------------------------------------------------------------
性质不同
(1)final为关键字;
(2)finalize()为方法;
(3)finally为为区块标志,用于try语句中;
作用
(1)final为用于标识常量的关键字,final标识的关键字存储在常量池中(在这里final常量的具体用法将在下面进行介绍);
(2)finalize()方法在Object中进行了定义,用于在对象“消失”时,由JVM进行调用用于对对象进行垃圾回收,类似于C++中的析构函数;用户自定义时,用于释放对象占用的资源(比如进行I/0操作);
(3)finally{}用于标识代码块,与try{}进行配合,不论try中的代码执行完或没有执行完(这里指有异常),该代码块之中的程序必定会进行;
final详解
1定义变量
1.1 final定义基本类型变量时,要求变量初始化必须在声明时或者构造函数中,不能用于其它地方。该关键字定义的常量,除了初始化阶段,不能更改常量的值。
1.2 final定义对象的引用,该引用的初始化与定义常量时的要求一致;该关键字定义的对象内容可以改变,但是引用指向的地址不能改变;
2定义参数
如果传入该参数定义的变量时,方法不能对该参数内容进行修改(错误),与定义变量的修改规则相同;java方法中传递基本类型时是传值的,java方法对于对象的传递是传参的;<归根结底,java中方法的传递是依靠传递“副本”:对于基本类型,首先建立一个Copy,并将传入的值赋值给Copy,然后对Copy进行操作;对于对象类型,首先建立一个引用Copy,并将传入的对象引用赋值给Copy>
比如:method(final int test);
有些书上说,这里final定义参数,尤其是对象的参数很有作用,不能在方法内对于对象的内容进行改变,这样的说法是错误的!原来我也认为这样有些函数式编程的特点,不能对于对象的内容进行修改该,这里依旧可以对对象的内容进行修改。
String天生就是final类型的!
3定义方法
(1)使用final关键字定义的方法,不能被子类继承;
(2)允许编译器将所有对此方法的调用转化为inline(行内)行为,即可以将此方法直接复制在调用处,而不是进行例行的方法调用(保存断点、压栈),这样会使程序的效率升高。但是---------如果过多的话,这样会造成代码膨胀,反而会影响效率,所以该方法要慎用。。
4定义类
一个任何final类无法被任何人继承,这也就意味着此类在一个继承树中是一个叶子类,并且此类被认为是很完美的,不需要进行任何修改(总之是不推荐使用)
------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------
---------------------- 黑马程序员 Android培训、期待与您交流! ----------------------
- 黑马程序员----基础知识要点总结
- 黑马程序员---基础知识总结
- 黑马程序员-基础知识学习总结
- 黑马程序员 02基础知识总结
- 黑马程序员------java基础知识总结
- 黑马程序员_01Java基础知识总结
- 黑马程序员---java基础知识总结
- 黑马程序员-基础知识部分总结
- 黑马程序员 基础知识小总结
- 黑马程序员__oc基础知识总结
- 黑马程序员_Java基础知识总结
- java基础知识总结---黑马程序员
- 黑马程序员_java基础知识总结
- 黑马程序员--Java基础知识总结
- 【黑马程序员】-OC基础知识总结
- 黑马程序员-Java基础知识总结
- 黑马程序员--Java基础知识总结
- 黑马程序员_01_Java基础学习要点总结
- 字符串与数字之间的转换
- 企业建站相关说明
- Unity3d之MonoBehaviour的可重写函数整理
- 深入浅出理解局部、全局、静态、动态、外部变量
- 容器set和multiset
- 黑马程序员----基础知识要点总结
- [Java] instanceof 深入探讨
- 图像处理与计算机视觉:基础,经典以及最近发展(3)计算机视觉中的信号处理与模式识别
- 改mysql端口后,启动mysql失败
- i++和++i的区别
- C++ STL算法系列6---copy函数
- CentOS 桌面环境的一些设置
- 为什么有些网站不设置关键词排名却很好
- C++ STL算法系列5---equal() , mismatch()