NullPointerException空指针异常
static:静态
能修饰方法(静态方法),全局变量(静态属性,类变量)
不能修饰类,构造器,局部变量
静态属性和静态,可以直接通过类名调用
静态方法只能直接访问静态成员 不能直接访问非静态成员
静态属性归这个类的所有对象共享
对于静态变量的内存解释
图片发自简书App
单例模式(饿汉模式、懒汉模式)
package com.neuedu.chapter3_0308;
public class Singleton {
/*
* --饿汉模式
* --懒汉模式(懒加载)
*
*
* 单例模式:保证一个类只能有一个实例(一个类只能创建一个对象)
*
* 问题1:怎么解决“多例”(不能让其他类随意的使用构造器)
* 解决方式:构造器私有
*
* 问题2:怎么解决提供一个实例
* 解决方式:在单例的类中创建一个实例
*
* 问题3:不能随意修改
* 解决方式:将创建的实例也私有
*
* 问题4:如何获取这个实例
* 解决方式:提供一个静态公有方法,将实例反出去
*
*/
// 饿汉模式
// private static Singleton singleton = new Singleton();
// private Singleton() {}
// public static Singleton getInstance(){
// return singleton;
// }
// 懒汉模式(懒加载)
private static Singleton singleton ;
private Singleton() {}
public static Singleton getInstance(){
if(singleton==null) {
singleton =new Singleton();
}
return singleton;
}
}
全局常量
package com.neuedu.chapter3_0308;
public class Demo3 {
int num1 = 100;
// 常量作为全局变量时没有默认值,必须赋值
final int NUM2 = 200;
// 修饰基本数据类型值不能变
// 修饰引用数据类型引用值不能变
final static int ARR[]= new int[]{1,2,3,4,5};
public static void main(String[] args) {
int num1=20;
num1= 100;
// 常量就是在程序运行中不可变的量
final int NUM2 ;
NUM2 = 100;
ARR[1]=10;
}
}
继承
继承:
一个类可以从一个现有的类当中派生出来
称为该类的子类,原有的类称为父类(基类、超类)
子类会拥有父类当中所有的属性和方法
除了:①私有成员 ②构造器
在Java中只支持单继承
一个子类只能有一个直接父类,一个父类可以有任意多个子类
继承的语法
public class A extends(拓展) B{}
继承带来的优点:
是一种代码重用的重要手段,也是实现“开闭原则”的基础,
同事子类还可以添加自己的
开闭原则:对拓展开放,对修改关闭
public class Employee {
String name;
int id;
public void code() {
System.out.println(name+"在工作");
}
}
// Manager继承Employee
public class Manager extends Employee{
}