面向对象详解

1:成员方法的参数讲解  值参数(参数类型是值)   引用参数(参数类型是数组或者其他类型)  不定长参数

     1:值参数  

           面向对象详解

2:引用参数

     面向对象详解

3:不定长参数

   面向对象详解



2:构造函数详解

     自己如果定义了构造函数    都是有参的  这个时候系统就不会自动为我们创建无参的构造函数了

     私有构造函数  是为了实现单例模式   注意  对象必须是静态的

     

public class Person {

    private static Person person;
    private int age;
    private Person(int age) {
        this.age = age;
    }

    static synchronized  Person getInstance(){
        if(person==null){
            person=new Person(1);
        }
        return person;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

   引用 对象  类之间的关系

   引用只是存放一个对象的内存地址,并非存放一个对象, 严格的说 引用和对象是不同的。


3:对象的销毁

     一般会被销毁的对象  1:超出了作用范围   2:将对象置为null 

    

4:this关键字

     一般情况下,当成员变量和局部变量的变量名重复的时候,会使用this关键字实现区分两个变量。

    this其实就是本类的一个对象,

    this还可以调用类的构造函数  ,但是在这个函数之前不可执行其他方法。代码会提示

    面向对象详解


5:静态变量 

     当类首次被加载的时候,静态变量就被分配到内存中,直到程序结束。

     静态常量

     如果多个类使用同一个数据常量,此时就没有必要在每一个类里面都创建变量。这样浪费空间。可以创建静态常量。

     注意需要大写。

     静态方法

     有的时候,不希望创建类的对象而调用此方法。

6:静态代码块

     static修饰的代码区域成为静态代码块   定义静态代码块可以完成类的初始化操作。

     执行顺序:静态代码块   非静态代码块  构造函数  非静态代码块 

     静态代码块只会执行一次  非静态 第一次创建一次  第一个对象创建之后执行一次  随后在创建对象就不在执行。


7:面向对象思想

    1:封装  将对象的属性和行为封装起来的载体就是类  类通常隐藏细节, 这就是封装的思想。

    2:继承:  单继承

         重写父类的方法  不可以将父类方法的权限范围降低。

        

Person person=new Person();
person.eat();
Person person1=new Personone();
person1.eat();
Person person2=new Persontwo();
person2.eat();

   注意  以上调用的方法  分别都是子类自己实现的api。  就是如果父类的对象是由子类实例化的,这个对象调用的方法也是

   子类重写过得。

   super关键字:  子类重写了父类的方法  如果想调用父类的方法, 可以调用super.实现调用父类的成员变量和方法。

    注意  在子类的构造方法,使用super的时候,其他初始化代码必须写在super之后,不可写在前面。

    注意  子类对象在实例化的时候,父类对象也会被实例化,java编译器会在子类构造方法中自动调用父类的无参构造方法,

    但有参构造方法并不能自动调用。只可以依赖于super关键字显示调用父类的构造函数。


     所有类的父类:

     Object



3:多态

     方法重载

     向上转型   向下转型


4:抽象类  接口

     区别:


5:final


6:内部类


7: