面向对象编程
- 面向对象编程(Object-Oriented Programming,OOP)
- 面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据。
- 抽象
- 三大特性 (封装,继承,多态)
- 静态方法可直接调用
- 非静态方法需要 new 需要类实例化
package com.hongyuan.oop;
public class Demo02 {
public static void main(String[] args) {
Demo01 demo01 = new Demo01();
demo01.Student();
}
}
package com.hongyuan.oop;
public class Demo01 {
// 学生类
public void Student(){
System.out.println("hello");
}
}
值传递,引用传递
(1)基本数据类型传值,对形参的修改不会影响实参;
(2)引用类型传引用,形参和实参指向同一个内存地址(同一个对象),所以对参数的修改会影响到实际的对象;
(3)String, Integer, Double等immutable的类型特殊处理,可以理解为传值,最后的操作不会修改实参对象。
类和对象
- 从认识论的角度考虑是现有对象后有类,对象,是具体的事物,类,是抽象的,是对对象的抽象
- 从代码运行角度考虑是现有类后有对象,类是对象的模板
- 使用new关键字创建对象时,除了分配内存空间之外,还会给 创建好的对象 进行默认的初始化,以及类中构造器的调用
- 面向对象的本质(oop):以类的方式组织代码,以对象的组织(封装)数据
构造方法
- 类需要构造方法?
- 使用new关键字,必须要有构造器。
- 使用new的本质是调用构造器
- 一旦定义了有残构造,无参构造就必须显示定义
- 构造器一般用来初始化值
构造器
-
和类名相同
-
没有返回值
-
new 本质就是调用构造器
-
初始化对象值
-
定义了有参构造之后,如果想使用无参构造,显示的定义了一个无参的构造
this 关键字,返回当前类的对象
package com.hongyuan.oss;
public class application {
public static void main(String[] args) {
Student student = new Student();
System.out.println(student.name);
System.out.println("============");
Student student1 = new Student("hongyuan");
System.out.println(student1.name);
}
}
package com.hongyuan.oss;
public class Student {
String name;
int age;
// 使用new 关键字的本质是在调用构造器
// 构造器的主要作用是初始化值
public Student(){
this.name = "钟";
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public Student(int age) {
this.age = age;
}
public Student(String name){
this.name = name;
};
}