学习日志(day11)

面向对象

Java是面向对象的程序,OOP(Object Oriented Programming)

对象是什么

​ 万事万物皆对象,看得见,摸得着的都是对象,一件事也是一个对象。

对象的构成

​ 所有对象都有状态,状态是指对象本身固有的特性。例如,学生有姓名,年龄,体重,身高,肤色等

​ 所有对象都有行为,行为是指对象具有的功能。例如,学生做作业,听课,玩儿游戏。

  • 属性=状态
  • 方法=行为
  • 属性是类内方法外的变量

类是什么

​ 如果对象都有相同的状态和相同的行为,就可以将这些对象归为同一类,例如,所有有姓名,有年龄,有学号的状态,有做作业行为,这些对象可统称为学生。

​ 类是具有相同的状态和相同的行为的一组对象的集合。

类和对象的关系

​ 类和对象的关系就如同模具和用模具制作出来的物品之间的关系。一个类给出他的全部对象的一个统一的定义,而它的每个对象则是符合这种定义的一个实体(也称作实例),因此类和对象就是抽象和具体的关系,类是多个对象进行综合抽象的结果,是实体对象的概念模型,而一个对象是一个类的实例

  • 类是对象的抽象,类是对象的模板
  • 对象是类的实例,对象是类的一个具体个体

定义类

  • 定义Person类
public class Person{
    
}
  • 定义类的属性
public class Person{
    String name;
    int age;
    String gender;
}
  • 定义类的方法
public class Person{
    String name;
    int age;
    String gender;
    
    public void dowork(){
        
    }
    public void learn(){
        
    }
}

定义对象

通过new运算符创建对象

Person person=new Person();

对象分为两部分,分别为对象的引用和对象的实例

  • 对象的引用:person在栈中分配内存

  • 对象的实例:new Person()在堆中分配内存

    对象的引用指向到对象的实例

    public class Person {
      //类的属性
    public String name;
    public int age;
    public String gender;
    //类的方法
    public void work(){
    System.out.println(this.name+"的工作理念:工作让生活更美好");
    }
    public static void main(String[] args) {
    //实例化对象
    Person person = new Person();
    //为属性赋值
    person.name="洱海月";//使用对象
    person.age=23;
    person.gender="男";
    person.work();
    Person person1 = new Person();
    person1.name="洱海月001";
    person1.age=23;
    person1.gender="男";
    person1.work();
    Person person2=person1;
    }
    }

类的构成

类的成员变量

类的属性是指类内,方法外声明的变量。

类的属性也叫成员变量

类的成员变量的内存分配在堆中,属性的内存单元是在实例化对象时分配的

public class Person{
    String name;
    int age;
    String gender;
}
Person person=null;
person.name="erhaimoon";

person是空指针,无法将字符串erhaimoon保存到person指向的内存单元中

变量作用域

成员变量的作用域是类内

局部变量的作用域是方法内或循环内或者if语句内

类的成员方法

类中定义分方法就是类的方法,也叫成员方法

类包括main方法,构造方法,析构方法,普通方法

方法重载

  • 方法重载是什么

在同一个类中,方法名称相同,方法参数不同(个数不同,或者类型不同,或者顺序不同)与返回值无关的多个方方法称为方法重载

 //类的方法
    public void work(double hour){
        System.out.println(this.name+"的工作理念:工作让生活更美好");
    }
    //方法重载(方法名称相同,参数个数或者类型或者顺序不同,与返回值无关)
    public void work(int hour){
        System.out.println("方法重载!");
    }
  • 方法重载的调用

方法调用时,jvm会自动根据主调方法的参数来决定调用那个重载形势的方法

        person1.work();
        person1.work(5);

java里的参数传递

评论