java基础_构造方法、this、static关键字

一、方法的重载:(多态之一的:静态多态)

  • 在同一个类中:方法名相同,形参列表不同的两个或多个方法构成重载。
    • 注意:形参列表不同分两种情况:
      1、形参的个数不同 2、形参的顺序不同 3、参数类型不同。
    • 判断是否重载,只关注<方法名>和<形参列表>。

二、构造方法

  • 构造方法的主要作用就是做一些初始化的工作!
  • 构造方法的特点:
    • 1、与类名相同!
    • 2、没有返回值类型(不需要任何的返回值,连void都不准有)
  • 有没有返回值类型、方法名是否和类型一样。
  • 注意:
    • 1、在我们使用new来创建对象的时候,实际上是已经调用相应的构造方法来对这个对象进行初始化
    • 2、构造方法也可以重载overload。
    • 3、一个类中可以根据需要定义多个构造方法,这些构造方法直接构成重载。
    • 4、如果一个类没有显示的声明任何的构造方法,则会自动添加一个无参的默认构造方法。这个构造方法没有任何动作。
    • 5、如果显示的添加了任何一个构造方法,则默认的无参构造方法不服存在。
    • 6、建议任何情况下,都手动添加一个无参的构造方法。 很多框架需要使用无参的构造方法来创建对象。
    • 7、只有在new的时候才会调用构造方法。
    • 8、构造方法永远不能通过 对象.构造方法()去调用。

三、构造代码块:

  • 1、作用和构造方法是一样的,也是对对象进行初始化的工作。
  • 2、构造代码块的执行也是每new一次执行一次。
  • 3、构造代码块的执行顺序总是在构造方法之前。
  • 静态代码块:

四、面向对象的特点1:封装性

  • 三大特征:封装性、继承性、多态性
  • 属性的封装:把属性添加相应的权限修饰符(private public protected(默认))
  • 属性添加private修饰符之后,这个属性则只能在这个类的内部访问,出了这个类,则无法访问。属性封装之后,应该提供一些公共的可以供外界访问的方法。 setter和getter。

五、this:指代当前对象。

  • 1、指代当前对象,可用使用 this.属性 或者 this.方法() 来访问当前对象的属性或调用当前对象的方法。
this.eat(null);  
  • 2、this可以作为当前对象的引用,作为参数进行传递。
fun(this);  
  • 3、在构造方法的内部去调用当前类的其他构造方法。this(实参);
  • 注意:
    • 1、调用构造方法的时候,一定是在构造方法的内部,调用的当前类的其他的构造方法。
    • 2、在用this调用构造方法的时候,那必须是在构造方法的首行。
    • 3、通过this调用构造方法的时候,一定要避免一种循环调用。 - 构造方法不能自己调用自己。
    public User(){
        //this();  //构造方法不能自己调用自己
    }

    public User(String name,String sex,int age){
        this(name,age);//必须在第一行
        this.sex = sex;
    }  
    public User(String sex){
        this();
        this.sex = sex;
    }

    public User(String name, String sex){
        this(sex);//必须在第一行
        this.name = name;
    }  
this(name,sex)//使用this(实参);来调用当前类的其他构造方法

  • 实例属性、非静态属性

六、static

  • 静态属性不是属于某个具体的对象的,而是所有的对象所共有。
  • 静态属性都在方法区中,这里的每个成员都是独一无二(不会重复),所有的对象共有。
  • 静态属性是属于类的,而不是属于某个具体的对象的!类属性!
  • 访问平台属性应该使用静态的方式:类名.属性。
  • 注意:通过对象去访问静态的属性是不推荐的!!!
  • static也可以修饰方法,表示这个方法是静态方法。
    访问方式也是推荐通过类名直接去访问。
  • 非静态的方法可以访问静态的方法,但是静态方法不能访问非静态方法。

  • 1、静态方法可以访问静态属性,静态的属性是随着类的加载而加载的。
  • 2、静态方法不可以访问非静态属性。(访问静态方法可以没有对象,但是非静态属性是随着对象加载产生的)
  • 3、非静态的能访问静态的。

  • 静态代码块:用static修饰的代码块称之为静态代码块。

  • 静态代码块的执行是在这个类加载到内存的时候自动调用,而且只调用一次。
  • 注意区分构造代码块
new Person;//静态代码块只调用一次
new Person;//
Person fun();//
  • 静态代码块–> 构造代码块–>构造方法 执行顺序:先静态后构造,先父类后子类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值