一、方法的重载:(多态之一的:静态多态)
- 在同一个类中:方法名相同,形参列表不同的两个或多个方法构成重载。
- 注意:形参列表不同分两种情况:
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();//
- 静态代码块–> 构造代码块–>构造方法 执行顺序:先静态后构造,先父类后子类