面向对象-2

一、static 修饰符

static 修饰符可以用来修饰成员变量、成员方法、代码块

使用static 修饰的成员变量称为静态变量,可以使用类名来调用

使用static修饰的成员方法称为静态方法,可以使用类名来调用

使用static修饰的代码块称为静态代码块(创建类的时候才会执行一次,完成对象初始化)

1.1 代码块

普通代码块 : {  }

在类中直接使用大括号包含的代码块,在创建对象时,每创建一次对象就会加载一次

静态代码块:static{  }

在类中使用static{  }包含的代码块称为静态代码块,只有在加载类时才会被执行一次,只会执行一次。

1.2 属性和方法

static修饰的属性和方法属于类(class)的(属于类的),只能有一个

普通属性和方法属于对象的 (属于对象的)

       被static修饰过的方法与属性与普通方法的区别:

类变量:被static修饰过的变量,在内存中只有一个拷贝,类内部可以在任何方法中直接访问。

实例变量:没被static修饰过的变量,每创建一个实例就会为实例变量分配一次内存,互不影响。

调用

在一个类中 静态方法只能调用静态属性和方法

实例方法可以调用静态属性和方法,也可以调用实例属性和方法。

二、继承

多个类中都有相同的属性和方法,从代码的复用性角度,可以提取相同属性和方法到父类中,子类继承父类。

使用 extends 关键字

( 子类  extends   父类)。

子类能继承父类什么东西和修饰符有关系,不能继承构造方法。

默认修饰符就是没有写修饰符,它的权限就是包权限

三、方法重写

重写主要发生在父类与子类之间(父类的构造方法不能被重写)

在子类中重写父类的方法,主要是为了使该方法更符合子类使用,子类如果想使用父类的属性和方法,可以使用super. 来调用父类的方法和属性。

方法重写的注意点

  1. 方法名必须相同
  2. 参数列表必须相同
  3. 返回值的类型相同或者是其子类
  4. 访问权限子类不能大于父类、
  5. 不能比父类抛出更多的异常

方法重写与方法重载的区别:

四、Object类

所有类的祖先类,当一个类没有显示的说明它继承谁,那么它就继承Object,

Object中有一些公共方法,所有类都可以使用

Object中的Equals方法是比较两个对象是不是同一个对象,源码中使用的是==

String里面的equals方法是比较内容是否相等,是因为String类中重写了equals方法

五、继承情况下的构造方法执行顺序

当子类对象被创建时,会先创建父类对象,因为在子类的构造方法中如果第一句没有写super(……)或者this(……),系统会默认隐藏提供super(),(调用父类的无参构造),this(……)是去调用自己重载的构造方法。

六、多态

多态:同一个引用类型,使用不同的实例而执行不同操作

系统的扩展性和维护性好,添加新功能,不修改原有的代码

七、抽象方法

使用abstract修饰的方法就是抽象方法,该方法不需要实现(就是不能有大括号)
抽象方法是希望子类去重写的

八、抽象类

有抽象方法的类一定是抽象类,抽象类不能被实例化,可以包含普通的类元素,注意抽象类中不一定有抽象方法。

九、单例模式

懒汉模式

饿汉模式

 

 

统计一个类被创建对象的次数


十、接口

 接口代表一种功能,规范,标准

一个类只能继承一个直接父类,但是可以实现多个接口,理解为java多继承

接口的语法规定:

 

 

 

十一、工厂模式

简单工厂

有新的需求的时候,需要修改getPet方法,扩展性维护性不是很好

 

工厂方法模式

定义总的获得宠物的工厂接口

定义具体生产某种动物的工厂(实现总的工厂接口)

在获得宠物的方法中,传递的参数是工厂接口

 当系统需要扩展功能时,添加新增宠物了,我们只需要定义新宠物类,新宠物的工厂就可以并入我们的老系统了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值