java面向对象1(学习笔记HOW2J)

  • 重载: 方法名相同 但是其参数类型不同 调用时根据传入的参数数量和类型判断具体执行哪个方法
public void attack()
public void attack(Hero h1)
public void attack(Hero  h1 , Hero h2)
  • 可变数量参数函数定义
public void attack(Hero... heros)
// 在该函数内,使用操作数组的方式处理heros即可
  • 构造方法

  1. 对象实例化通过构造方法实现,如Hero h1 = new Hero(),其中Hero()为Hero类的默认构造方法。

  2. 当定义类时,显示指定了有参构造方法时如 Hero(string name){...};  那么默认的无参构造函数将不再存在,除非在该类中显示定义。

  3. 构造方法和普通方法一样可以重载

  • this 关键字

  1. this关键字代表当前对象。

     2. this对象访问对象属性如 this.name  this.age

  3.通过this可以调用其构造方法 如  this(name)

  • 传参

  1. 基本类型传参 : 方法内,不能修改方法外的基本类型参数

  2. 类类型传参: 类类型又被称为引用,指定义一个引用类型变量指向一个对象  如: Hero h1 = new Hero()    此时方法内就可以改变所传引用指向对象的属性

  • 包  package

  1. 把比叫近的类规划进同一个包内

   Hero,ADHero 规划在一个包,叫做charactor(角色)    Item,Weapon规划在另一个包下,叫做 property(道具)

1 package charactor
2 public class Hero{
3   String name;
4   float   hp;
5   float   armor;          
6   int moveSpeed
7 }

   2. 使用同一个包内的类直接使用, 但是使用不同包的类,必须 import

import property.Weapon;
  • 访问修饰符  private public protected package(不写)

  1. 类间关系     自身  同包子类  不同包子类   同包类      其他类

       private        访问     继承           继承            访问         访问

       package     访问     继承           继承            访问          访问

      protected    访问     继承           继承            访问          访问

      public          访问     继承           继承            访问          访问

  如何选取修饰符,依赖于 “作用范围最小准则

  • 类属性 类方法 (静态  static)

  类属性和类方法为类所有,所有对象共享一个

  • 单例模式

  引言: LOL只有一个大龙GiantDragon,只有一个,因此该类只能被实例化一次。

  饿汉式单例模式:(无论如何都会创建一个实例)

package charactor;
public class GiantDragon{
    private GiantDragon(){
        
    }
    private static GiantDragon instance = new GiantDragon();
    
    public static GiantDragon getInstance(){
        return instance;
    }
}

  懒汉式单例模式:(只有调用getInstance时才会产生实例)

package charactor;
public class GiantDragon{
    private GiantDragon(){
        
    }
    private static GiantDragon instance;
    public static GiantDragon getInstance(){
        if(null == instance){
            instance = new GiantDragon();
        }
        return instance;
    }
}

  饿汉式是立即加载方式,无论是否用这个对象,都会加载;懒汉式是延迟加载的方式,只有使用的时候才会加载。

  看业务需求,如果业务上允许有比较充分的启动和初始化时间,就使用饿汉式,否则就使用懒汉式。

  单例三要素:

    1. 构造方法私有化

    2. 静态属性指向实例

    3. public static的 getInstance方法,返回第二步的静态属性

 

  • 枚举类型

  enum是一种特殊的类,使用枚举可以方便的定义常量

public enum Season{
    SPRING,SUMMER,AUTUMN,WINTER
}

  借助增强型for循环可以方便的便历枚举

public class Test{
    public static void main(String[] args){
        for(Season s: Season.values()){
            System.out.println(s);
        }
    }
}

 

你可能感兴趣的:(java面向对象1(学习笔记HOW2J))