JavaSE Day07
1. 什么是面向对象
面向对象的思想:物以类聚,分类的思维模式,然后对这些分类进行单独思考
属性+方法->类
对于描述复杂的事物,为了从宏观上把握、从整体上合理分析,我们现需要面向对象的思路来分析整个系统。但是,具体到围观操作,仍然需要面向过程的思路去处理。
面向对象(Objiet-Oriented Programming,OOP)是框架,面向过程是流程
面向对象编程的本质:以类的方式组织代码,以对象的组织(封装)数据
三大特性:封装、继承、多态
从认识论先有对象后又类。对象,是具体的食物;类,是抽象的事物,是对对象的抽象。
从代码运行角度是先有类后有对象。类是对象的模板
1 package com.oop; 2 3 import java.io.IOException; 4 5 //Demo01就是一个类 6 public class Demo01 { 7 //main 方法 8 public static void main(String[] args) { 9 10 } 11 12 /* 13 修饰符 返回值类型 方法名(。。。){ 14 //方法体 15 return 返回值; 16 } 17 */ 18 public String sayHello() { 19 return "hello,world"; 20 } 21 22 public int max(int a, int b) { 23 return a > b ? a : b; 24 } 25 26 //throws IO抛出输出异常 27 public void readFile(String file) throws IOException { 28 29 } 30 }
静态方法、非静态方法:
1 package com.oop; 2 3 public class Demo02 { 4 public static void main(String[] args) { 5 //静态方法 static 6 Student.say(); 7 //非静态方法,实例化这个类 new 8 //对象类型 对象名=对象值 9 Student student = new Student(); 10 student.say1(); 11 12 } 13 14 //和类一起加载 15 public static void a() { 16 b(); 17 } 18 19 //类实例化 之后才存在 20 public void b() { 21 22 } 23 }
1 package com.oop; 2 3 //学生类 4 public class Student { 5 6 //静态方法 7 public static void say() { 8 System.out.println("学生说话"); 9 } 10 11 public void say1() { 12 System.out.println("学生说话"); 13 } 14 15 }
值传递和引用传递:
1 package com.oop; 2 3 //引用传递:对象,本质还是值传递 4 public class Demo03 { 5 public static void main(String[] args) { 6 Person person = new Person(); 7 8 System.out.println(person.name);//null 9 10 Demo03.change(person); 11 12 System.out.println(person.name); 13 } 14 15 public static void change(Person person) { 16 //person是一个对象:指向的--->Person person = new Person();这是一个具体的人,可以改变属性 17 person.name = "anzhenyu"; 18 } 19 } 20 21 class Person { 22 String name;//null 23 }
2. 类和对象的关系
-
类是一种抽象的数据类型,它是对某一事物整体描述/定义,但是并不能代表某一个具体的事物。
动物、植物、手机、电脑
Person类、Pet类、Car类,这些类都是用来描述/定义某一类具体的事物应该具备的特点和行为
-
对象是抽象概念的具体实例
张三就是人的一个具体实例,张三家里的旺财狗就是一个实例
能够提现出特点,展现出功能的是具体的实例,而不是一个抽象的概念
3. 创建与初始化对象
使用new关键字创建对象
使用new后,除了分配内存外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用。
1 package com.oop.demo02; 2 3 //学生类 4 public class Student { 5 6 //属性:字段 7 String name; 8 int age; 9 10 //方法 11 public void study() { 12 System.out.println(this.name + "在学习"); 13 } 14 }
1 package com.oop.demo02; 2 3 //一个项目应该只存在一个main方法 4 public class Application { 5 public static void main(String[] args) { 6 7 //类:抽象的,需要实例化 8 //类实例化后返回一个自己的对象! 9 //student对象就是一个Student类的具体实例!!! 10 Student student = new Student(); 11 Student xiaoming = new Student(); 12 Student xiaohong = new Student(); 13 14 xiaoming.name = "小明"; 15 xiaoming.age = 23; 16 17 System.out.println(xiaoming.name); 18 System.out.println(xiaoming.age); 19 //调用方法 20 xiaoming.study(); 21 } 22 }
4. 构造器
类中的构造器也称为构造方法,是在进行创建对象的时候必须调用的。并且构造器有两个特点:
1.必须和类的名字相同。2.必须没有返回类型,也不能写void。
构造器必须掌握!
作用:
-
使用new关键字,必须要有构造器(如果没有构造器,new一个对象会报错,本质就是调用构造器)
-
用来初始化值
有参构造:一旦定义了有参构造,无参就必须显示定义
alt+insert自动生成构造器
1 package com.oop.demo02; 2 3 //java生成了一个class文件 4 public class Person { 5 6 //一个类即使什么都不写,他也会存在一个方法 7 8 String name; 9 10 //无参构造器 11 //作用:实例化的初始值 12 public Person() { 13 this.name = "anzhenyu"; 14 } 15 16 //有参构造:一旦定义了有参构造,无参就必须显示定义 17 public Person(String name) { 18 this.name = name; 19 } 20 21 //alt+insert 22 23 }
1 package com.oop.demo02; 2 3 //一个项目应该只存在一个main方法 4 public class Application { 5 public static void main(String[] args) { 6 7 //new实例化了一个对象 8 Person person = new Person(); 9 System.out.println(person.name); 10 } 11 }
5. 创建对象内存分析

6. 类与对象小结
-
类与对象
类是一个模板:抽象;对象是一个具体的实例
-
方法
定义、调用
-
对应的引用
引用类型:基本类型
对象是通过引用来操作的:栈---->堆
-
属性:字段 成员变量
默认初始化:
数字:0 0.0
char:u0000
boolean:false
引用:null
修饰符 属性类型 属性名=属性值!
-
对象的创建与使用
---必须使用new关键字创建对象,构造器 Person yc = new Person()
---对象的属性: yc.name
---对象的方法: yc.sleep()
-
类:
静态的属性 属性

浙公网安备 33010602011771号