您的位置:首页 > 编程语言 > Java开发

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 ;

不管怎么实现我们都要重写父类的方法。编译才不会报错。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: