一、引用 是一个类类型的变量,即实例化的过程
例 :hero n=new hero();中的n就是引用,这里 = 是指向(代表)的意思,new hero()是对象
二、继承别的类属性--------extends
三、方法重载
指的是方法名一样,但是参数不一样
四、构造方法
指的是方法名和类名一样,而且没有返回类型。实例化对象的时候必然会用构造方法
五、this----就是我的意思,即代表当前对象
六、传参----也是变量,有基本类型传参和类类型传参两种
七、包 ---- 要想使用其他包下的类,这时候要注意修饰符的作用
八、修饰符-----已详细讲过这里不说了
九、类属性(是指被static修饰的属性也叫做静态属性)----所有对象共享的数据
例 static String name;
十、类方法(是指被static修饰的方法又叫做静态方法)----注意和对象方法( 也叫实例方法)的 区别----类方法不需要对象存在就能访问,而对象方法必须有一个对象的前提下才能访问
十一、初始化----对象属性初始化和类属性初始化(测试发现构造方法最后运行)
对象属性初始化有三种:声明属性的时候、初始化块、构造方法中
类属性初始化有两种:声明属性的时候、静态初始化块
十二、单例模式(又叫singleton,分为饿汉式和懒汉式)----指的只有一个实例存在的类
三元素:
1. 构造方法私有化、2. 静态属性指向实例、 3. public static的 getInstance方法,返回第二步的静态属性
使用方法:
饿汉式是立即加载的方式,无论是否会用到这个对象,都会加载。
如果在构造方法里写了性能消耗较大,占时较久的代码,比如建立与数据库的连接,那么就会在启动的时候感觉稍微有些卡顿。
懒汉式,是延迟加载的方式,只有使用的时候才会加载。 并且有线程安全的考量
使用懒汉式,在启动的时候,会感觉到比饿汉式略快,因为并没有做对象的实例化。 但是在第一次调用的时候,会进行实例化操作,感觉上就略慢。
所以还是看业务需求,如果业务上允许有比较充分的启动和初始化时间,就使用饿汉式,否则就使用懒汉式
1==饿汉式单例模式:
private GiantDragon();
private static GiantDragon instance=new GiantDragon ();
public static GiantDragon getInstance(){
return instance
}
package wdlx;
//饿汉单例模式
public class wx {
private wx(){
//通过私有化其构造方法,使得外部无法通过new 得到新的实例。
}
private static wx instance=new wx();//准备一个类属性,指向一个实例化对象。 因为是类属性,所以只有一个
public static wx getInstance(){
//public static 方法
return instance;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
2==懒汉式单例模式
懒汉式和饿汉式不同,只有在调用getInstance的时候才能创建实例
private garen(){
}
private static garen instance;
public static garen getInstance(){
if (null=instance){
instance =new garen();
}
return instance;
}
package wdlx;
//懒汉单例模式
public class zxx {
private zxx(){
//通过私有化其构造方法,使得外部无法通过new 得到新的实例。
}
private static zxx instance;//准备一个类属性,用于指向一个实例化对象,但是暂时指向null
public static zxx getInstance(){
//第一次访问的时候,发现instance没有指向任何对象,这时实例化一个对象
if(null==instance){
instance=new zxx();
}
//返回 instance指向的对象
return instance;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
十三、枚举类型(是一种特殊的类)----使用枚举可以很方便的定义常量
总结:利用增强for循环,switch
package wdlx;
public enum enumTest {
TANK ,
WIZARD ,
ASSASSIN ,
ASSIST ,
WARRIOR,
RANGED ,
PUSH ,
FARMING;
public static void main(String[] args) {
// TODO Auto-generated method stub
for(enumTest n:enumTest.values()){
switch(n){
case TANK:System.out.println("坦克");
case WIZARD:System.out.println("法师");
}
}
}
}