2020.12.05韩德云md

2020.12.05

面向对象

1,对象

对象的概念:

万事万物皆对象,对象有两个特征:

1:状态------本身固有的属性

2:行为------其具有的特征

另外的,属性是类内,方法外的变量.

2,类

概念:

具有相同状态,相同行为的一组对象就归为一个类.类是具有相同的状态和相同的行为的一组对象的集合

类和对象的关系:

类是对象的模板,对象是类的实例.

定义类:

1,定义类:

Public class Student{

}

2,定义类的属性:

Public class Student{
    String name;
    int age;
    String gender;
}

3,定义类的方法

Public class Student{
    String name;
    int age;
    String gender;
    
    public void dowork{
    
    }
    public void learn{
    
    }
}

定义对象:

通过new运算符创建对象,例:

studdent s = new Student();

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

对象的引用 s 是在栈中

对象的实例 new Student();是在 栈中.

图:

使用对象:

使用成员运算符.来使用对象.

例:

s.name = "handeyun ";

s.dowork();

对象的数组

代码:

Person[] person = new person[]{
    songjiang,
    huarong,
    husanniang
}

内存:

类的构成:

类的构成是指类中包含哪些内容

类中包含属性和方法

类的成员变量:

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

类的属性

也叫成员变量。

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

例:

**public** **class** Student {

  //定义类的属性

  String name;

  **int** age;

  **int** weight;

  String tel;

}

方法重载

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

例:

**public** **void** dowork(**int** hour) {

  System.***out\***.println("做作业");

}

**public** **void** dowork(**double** a) {

  System.***out\***.println("做作业");

  **return** 0;

}

方法重载的调用:

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


public static void main(String[] args) {
        Student s =new Student();
        s.dowork();//调用没有参数的dowork方法
        s.dowork(21);//调用有一个整型参数的dowork方法
    }


Java里的参数传递

对比方法内部对基本数据类型参数与引用类型参数重新赋值后对主调方法的影响。


public class Person {
    public int age;
}
public class TestPerson {
    public static void main(String[] args) {
        //基本数据类型
        System.out.println("***** 基本数据类型 ****");
        int num1 = 11;
        int num2 = num1;
        System.out.println("num1="+num1);
        num2 = 22;
        System.out.println("把num1赋给num2后,修改num2的值,num1="+num1);
        //引用数据类型
        System.out.println("***** 引用数据类型 ****");
        Person person1 =new Person();
        person1.age =11;
        Person person2 = person1;
        System.out.println("person1.age="+person1.age);
        person2.age = 22;
        System.out.println("把person1对象赋给person2对象,修改person2对象的age属性值后,person1.age="+person1.age);
    }
}


运行结果:

***** 基本数据类型 ****

num1=11

把num1赋给num2后,修改num2的值,num1=11

***** 引用数据类型 ****

person1.age=11

把person1对象赋给person2对象,修改person2对象的age属性值后,person1.ag

评论