2020.12.5
2020.12.5
1.面向对象
1.1什么是对象?
万事万物皆对象,看得见、摸得着的都是对象,一件事也是一个对象。
1.2对象的构成
所有的对象都有状态,状态是指对象本身固有的特性。
所有的对象都有行为,行为是指对象具有的功能。
- 属性等同于状态
- 方法等同于行为
- 属性是类内方法外的变量
1.3什么是类?
类是具有相同状态和相同行为的一组对象的集合。
1.4类与对象的关系
一个类给出它的全部对象的一个统一的定义,而它的每个对象则是符合这种定义的一个实体(也称作实例),因此类和对象的关系就是抽象和具体的关系。
- 类是对象的抽象,类是对象的模板
- 对象是类的实例(instances),对象是类的一个具体个体
2.定义类
2.1定义类
[访问修饰符]class 类名{
成员变量声明;//属性
成员方法声明;//行为
}
2.2定义对象
通过new运算符创建对象
例如
Student s = new Student();
对象分为两部分,分别是对象的引用和对象的实例。
对象的引用:s 栈中
对象的实例:new Student(); 堆中
对象的引用指向到对象的实例。
2.3使用对象
public class Person {
public String name;
public String gender;
public int age;
public void work(){
System.out.println(this.name+"的工作理念:让生活更加美好");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Person songjiang = new Person();
songjiang.name="宋江";
songjiang.gender="男";
songjiang.age=24;
songjiang.work();
}
}
2.4对象的数组
代码:
Person[]=persons = new Person[]{
songjiang,
huarong,
husanniang
};
内存:
3.类的构成
3.1类的成员变量
- 类的属性是指类内,方法外声明的变量
- 类的属性也叫成员变量
- 类的成员变量的内存分配在堆中,属性的内存单元是在实例化对象时分配的。
3.2变量的作用域
- 成员变量的作用域是类内
- 局部变量的作用域是方法内或者循环内或者if语句内
3.3类的成员方法
- 类中定义方法就是类的方法,也叫成员方法
- 类的方法包括main方法、构造方法、析构方法、普通方法
3.3.1 方法重载
在同一个类中,方法名称相同,方法参数不同(个数不同,或者类型不同,或者顺序),与返回值无关的多个方法称为方法重载。
例如:
public void dowork(int hour) {
System.out.println("做作业");
}
public void dowork(double a) {
System.out.println("做作业");
return 0;
}
3.3.2方法重载的调用?
方法调用时,JVM会自动根据主调方法的参数来决定调用哪个重载形势的方法。例如:
public static void main(String[] args) {
Student s =new Student();
s.dowork();//调用没有参数的dowork方法
s.dowork(21);//调用有一个整型参数的dowork方法
}
3.3.3Java里的参数传递
对比方法内部对基本数据类型参数与引用类型参数重新赋值后对主调方法的影响。
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);
}
}
评论留言