面向对象&面向过程
oop(object-oriented programing):面向对象编程。
-
面向过程&面向对象
类:属性+方法
-
面向对象的本质:以类的方式组织代码,以对象的方式组织(封装)数据。
面向对象的三大特性
-
面向对象的三大特性:
-
封装
-
继承
-
多态:同一个事物表现出多种形态。如小明、小红都属于人这个类,在执行学习这个方法时,有的人成绩好,有的人成绩差。
-
-
实际参数和形式参数的类型要一一对应
值传递&引用传递
-
值传递&引用传递
-
值传递:
public class Demo03 { public static void main(String[] args) { int a = 1; System.out.println("a的值为:"+ a); change(a); System.out.println("a的值为:"+ a); } public static void change(int a){ a = 10; } }
a的值为:1 a的值为:1
-
引用传递:
public class Demo04 { public static void main(String[] args) { Person person = new Person(); System.out.println("person.name:" + person.name); change(person); System.out.println("person.name:" + person.name); } public static void change(Person person){ //这里person是一个对象。指向的是---->Person person = new Person();具体的人,可以改变属性。 person.name = "whl"; } } class Person{ String name; }
person.name:null person.name:whl
-
类和对象的关系
-
类和对象的关系
规范项目:一个项目应该只存在一个main方法,一般的类里面,只写属性、方法
- 关键字this:代表当前类
- 类是抽象的,需要实例化
-
创建与初始化对象
- Application启动类:
public class Application { public static void main(String[] args) { //类是抽象的,需要实例化类 //类实例化后,会返回一个自己的对象 //student对象就是一个Student类的具体实例! //同一个类下面可以产生不同的对象 Student student = new Student(); //默认值打印 System.out.println(student.name);//null System.out.println(student.age);//0 student.study(); } }
- Student类:
public class Student { //属性 String name;//抽象概念中的名字不应该被写死 int age; //方法 public void study(){ System.out.println(this.name + "在学习"); } }
//输出 null 0 null在学习
构造器
-
构造器
out文件夹输出的.class文件中,默认添加了一个方法,且该方法没有返回值;方法的名字与类名相同。(即无参构造)
得出结论:一个类即使什么都不屑也会得到一个方法。
- 快捷键:alt+insert
- 构造器特点:
- 和类名相同
- 没有返回值
- 构造器作用:
- new一个对象的时候,本质是在调用构造器
- 初始化对象的值
- 注意点:
- 一旦定义了有参构造,无参构造就必须显示定义,否则就回报错。
小结
-
小结类与对象
-
类是一个模板,对象是一个具体的实例
-
方法:定义、调用
-
对象的引用:
- 引用类型:基本类型(8),对象是通过引用来操作的。栈–>堆
-
属性:字段Field 成员变量
- 默认初始化:
- 数字:0、0.0
- char:u000
- boolean:false
- 引用类型:统统为null
- 书写模板:修饰符 属性类型 属性名 = 属性值!
- 默认初始化:
-
对象的创建和使用
- 必须使用new关键字创造对象,
- 对象的属性:
person.nama
- 对象的方法:
person.sleep()
-
类:
属性,方法
-
三大特性:
封装、继承、多态
-