static 静态
在静态方法中,只能访问静态成员,不能访问非静态成员
静态方法中不可以访问this super这种实例对象的指针
非静态方法可以方位静态成员
静态成员最早加载,最晚销毁
内部类
- 当一个事物在另一个事物中,离开该事物就没有价值
- 那么我们就成为他的内部类
非静态内部类不能包含静态成员
静态内部类不能访问外部类中的非静态成员
匿名内部类不能修改局部变量,但是可以修改成员变量。
public class InnerDemo {
public static void main(String[] args) {
Flag flag = new Flag();
flag.run();
flag.swing();
System.out.println("-------------------------------");
LuSheng luSheng = flag.new LuSheng();
luSheng.run();
luSheng.showColor();
}
}
class Animal{
protected int age=10;
public void run() {
System.out.println("我是动物我在跑");
}
}
class SwingThing{
public void swing(){
System.out.println("我是会游的东西");
}
}
class Flag{
private String color="黑褐色";
class LuSheng extends Animal{
public void run() {
System.out.println("我是青蛙我来跑");
}
public void showColor(){
System.out.println(color);
}
}
class Water extends SwingThing{
public void swing(){
System.out.println("我是青蛙,我游泳");
}
}
private LuSheng lushen;
private Water wart;
public void run(){
lushen.run();
}
public void swing(){
wart.swing();
}
public Flag() {
this.lushen=this.new LuSheng();
System.out.println(this.lushen.age);
this.wart=this.new Water();
}
}
单例设计模式
- 主要用于只能有一个实例的情况下
- 第一种实现
public class Time{
private final static Time t = new Time();
private Time(){}
public static Time getTime(){
return t;
}
}
- 第二种实现
public class Time{
private Time(){}
static class Date{
public final static Time t = new Time();
}
public static Time getTime(){
return Date.t;
}
}
简单工厂设计模式
主要用于生产单个产品
package priv.mill.inner;
public class FactoryDemo {
public static void main(String[] args) {
Driver driver=DriverFacotry.getDriver("Bycle");
driver.driver();
}
}
class DriverFacotry{
public static Driver getDriver(String token) {
if("car".equals(token))
{
return new Car2();
}else if("Bycle".equals(token)){
return new Bycle();
}else if("Train".equals(token)){
return new Train();
}
return null;
}
}
interface Driver{
void driver();
}
class Car2 implements Driver{
@Override
public void driver() {
System.out.println("开汽车");
}
}
class Bycle implements Driver{
@Override
public void driver() {
System.out.println("开自行车");
}
}
class Train implements Driver{
@Override
public void driver() {
System.out.println("开火车");
}
}