Java基础复习(二)
2015-07-01 14:45
375 查看
Java 复习
标签:java基础单列设计模式
单列设计模式的问题:保证一个类在内存当中的唯一性
1.不允许其他类创建本类。(私有构造函数)
2.在该类创建一个本地实列 (静态创建一个对象)
3.对外提供一个方法,让其他程序可以获取该对象 (类方法。可以获取该静态对象)
class Single { /* * 单列设计模式 -- 饿汉式 */ //创建一个静态的对象,让类加载的时候就可以拥有 private static Single single = new Single(); //私有化构造函数 private Single() {} //给一个可以获取该对象的内部方法 public static Single newInstance() { return single; } } class Single { /* * 单列设计模式 -- 懒汉式 */ //创建一个静态的对象,让类加载的时候就可以拥有 //用到了延时加载的问题 private static Single single = null; //私有化构造函数 private Single() {} //给一个可以获取该对象的内部方法 public static Single newInstance() { if (single == null) { single = new Single(); } return single; } }
继承的特点笔记
Java是但单继承的方式就是一个类只能继承一个父类,不能拥有多个父类
原因:因为两个父类可能同时出现同一个方法,子类到底调用的是哪一个类,会造成混乱;
- this额super的区别
this代表本类对象的引用
super代表父类内存空间的标识(就是内存地址)
当本类成员和局部变量同名时用this来区分
当子父类成员同名父类用super来区分
重载函数的两个特性
1.重载在一个类中2.覆盖,子类当中覆盖也称为重写,就是覆写。override
那么我们什么时候需要覆盖操作
当子类需要实现父类功能。但是功能的主体子类当中有特定的内容时。可以复写父类的方法。
构造函数
字符类构造函数的特点:
子类构造函数执行是,发现父类构造函数也运行了。
原因:在子类的构造函数当中,第一行有一个默认的隐式语句:
super();
注意: 如果使用
super(4),语句调用的是父类的其他构造函数,那么默认的父类构造函数将不会被调用,反而去调用父类指定参数的构造函数
P.S.
1、当父类中没有空参数的构造函数时,子类的构造函数必须通过this或者super语句指定要访问的构造函数。
2、子类构造函数中如果使用this调用了本类构造函数,那么默认的super();就没有了,因为super和this都只能定义在第一行,所以只能有一个。但是可以保证的是,子类中肯定会有其他的构造函数访问父类的构造函数。
3、super语句必须要定义在子类构造函数的第一行!因为父类的初始化动作要先完成。
构造代码块
作用:给对象进初始化的,
对象一旦建立,而且优先于构造函数执行。
和构造函数的区别:
够着代码块给所有对象进行统一初始化,而构造函数给对应对象进行初始化
继承当中内存加载原理
final关键字
final可以修饰类,方法和变量
final 修饰的类不可以被继承。
final 修饰的方法不可以被覆盖(系统的有些方法是不可以被覆盖的的)
抽象类
抽象的定义
抽象就是重多个事物中讲共性的,本质的内容抽取出来。
比如:猫和老虎豹子都属于猫科,猫科就是抽象出来的概念。
抽象类(absstract):
java 可以定义一些没有方法的体的方法,改方法的具体实现由子类去重写,这个方法叫做抽象方法,而拥有抽象方法的类就是抽象类
抽象类为什么不可以被实例化?
1.抽象类是具体事物抽取出来的,本身没有意义,也就是没有具体的事例。
2.因为里面的方法都没有具体的能够,调用了抽象方法也没有意思
3.抽象类通过子类实列化, 如果子类不实现抽象类的所有方法,那么子类里面也继承了父类的方法,那么子类也会变成了抽象类。所以子类在继承抽象类的时候必须实现父类的所有抽象方法。 子类实现了父类的抽象方法,相当于覆盖的了父类的方法。
4.抽象类是有构造函数的,(用于给子类进行给抽象类的字段初始化);
5.abstract不能和private,static, final关键字共存。
6.抽象类当中可以有非抽象方法,但是很少用,一般都没有方法体。
记住:抽象类也是一个类。所以他会拥有类的许多特征;
抽象类和一般类区别:
抽象类和一般类都是用来描述事物,都每部定义了成员
不同点:
1.一般类可以充分的描述事物,而抽象类不能
2.一般类里面不可以用抽象方法,只可以拥有非抽象方法。抽象类里面可以两者都拥有。
4.一般类可以被实例化,而抽象类却不可以。
接口
当一个抽象类中的方法都是抽象方法都是抽象方法时
接口里面的成员都是固定的:
成员常量:
public static fial
成员函数:
public abstract
所以接口里面的成都是公共的权限。
总结:接口可以多继承。增加了程序的扩展性,接口是抽象类,接口是实现,抽象类是继承。一个is a .
接口的是想 link a ;
不管怎么实现我们都要重写父类的方法。编译才不会报错。
相关文章推荐
- 关于java String的“==”和equals()比较、引用的小问题
- Java集合框架List,Map,Set等全面介绍
- 解决Eclipse启动闪退的最佳办法
- Java 基础入门随笔(6) JavaSE版——数组操作
- java压缩文件夹或文件
- JDK安装与环境变量配置
- unknow error:java.lang.NullPointerException
- JAVA8 StringJoiner类
- JAVA8 String.join 字符串拼接
- java 从jar包中读取资源文件
- 学习笔记_Java_day10_response发送状态码(3)
- SpringMVC DispatcherServlet 说明与web配置
- java:常用的集合类
- Spring MVC文件上传
- Spring MVC数据校验与国际化
- java与IOS之间的RSA加解密
- java.lang.IllegalArgumentException: Comparison method violates its general contract!的解决方法
- java缓存技术
- Spring MVC数据转换
- Java、MySQL - 前补0的方法