一、初识面向对象
Java的核心思想就是面向对象编程(oop)
(oo)就是面向对象
属性加方法就是类
面向过程思想:步骤清晰简单,第一步做什么,第二步做什么
面向过程适合处理一些较为简单的问题
线性思维
面向对象思想:物以类聚,分类的思维模式。思考解决问题需要哪些分类,再对分类进行单独思考
适合处理复杂的问题,适合处理需要多人协作的问题
对于描述复杂的事物,为了从宏观上把握,从整体上合理分析,需要使用面向对象的思路来分析整个系统。具体到微观操作,仍要面向过程的思路去处理。
面向对象编程的本质就是:以类的方式组织代码,以对象的形式封装数据
抽象是核心的思想
三大特性:封装
继承
多态
从认识论角度考虑是先有对象后有类,对象是具体的事物,类是抽象的,是对对象的抽象
从代码运行角度考虑是先有类后有对象,类是对象的模板。
二、回顾方法的定义
package com.oop.Demo01;
//类
public class Demo01 {
//main方法
public static void main(String[] args) {
}
/*
修饰符 返回值类型 方法名(...){
方法体
return 返回值;
}
*/
//返回值类型是void时,可以不写return,也可以写return;
//return代表结束方法,返回一个结果
}

三、回顾方法的调用
//静态方法的调用
public class Demo02 {
public static void main(String[] args) {
say();
}
//静态方法
public static void say(){
System.out.println("hello world");
}
}
//非静态方法的调用
public class Demo02 {
public static void main(String[] args) {
Demo02 demo02 = new Demo02();
demo02.say();
}
//非静态方法
public void say(){
System.out.println("hello world");
}
}
静态方法是和类一起加载的 普通方法是类实例化之后才存在的,所以静态方法不可以调用普通方法
实际参数和形式参数的类型要对应
值传递
public static void main(String[] args) {
int a = 1;
System.out.println(a); //1
change(a);
System.out.println(a); //1
}
public static void change(int a){
a = 10;
}
引用传递
//引用传递:对象,本质还是值传递
public class Demo04 {
public static void main(String[] args) {
Person person = new Person();
System.out.println(person.name);//null
Demo04.change(person);
System.out.println(person.name);//哈利波特
}
public static void change(Person person){
//person是一个对象,指向的--->Person person = new Person;这是一个具体的人,可以改变属性
person.name="哈利波特";
}
}
//可以有很多个class类,但只有一个public class
//定义了一个person类,有一个属性:name
class Person{
String name; // null
}
四、类与对象的创建
1、类与对象的关系
类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表某一个具体的事物
person类、cat类、car类等等
对象是抽象概念的具体实例,比如,张三是人的一个实例,他家的狗旺财是狗的一个实例
使用new关键字创建对象,会给创建好的对象进行默认的初始化,分配内存空间,以及对类中构造器的调用
package com.oop.Demo02;
//一个项目应该只存在一个main方法
public class Application {
public static void main(String[] args) {
//类:抽象的,要将它实例化
//类实例化后会返回一个自己的对象
//student对象就是一个Student类的具体实例
Student xiaoming = new Student();
Student xiaohong = new Student();
Student student = new Student();
xiaoming.name="小明";
xiaohong.name="小红";
xiaoming.age=3;
xiaohong.age=3;
System.out.println(xiaohong.age);
System.out.println(xiaoming.name);
}
package com.oop.Demo02;
//学生类
public class Student {
//属性:字段
String name;//null
int age;//0
//方法
public void study(){
System.out.println(this.name+"在学习");
}
//this代表当前这个类
}
五、构造器详解(很重要,要掌握)
类中的构造器也称为构造方法,是在进行创建对象时必须要调用的。
一个类即使什么都不写,也会存在一个构造方法。
构造器的特点:必须和类的名字相同
必须没有返回类型,也不能写void
package com.oop.Demo02;
public class Person {
String name;
//无参构造
//可以实例化初始值
//1、使用new关键字,本质是在调用构造器
//2、用来初始化值
public Person(){
this.name="wuhu";
}
}
package com.oop.Demo02;
public class Application {
public static void main(String[] args) {
Person person = new Person();
System.out.println(person.name); //wuhu
}
}


快捷键生成构造器 alt+insert
this.是当前对象
六、创建对象内存分析

方法区也是堆中的
new出来的对象可以直接去调用静态方法区中的方法

//这部分不想写笔记了,直接截图,芜湖
七、小结

浙公网安备 33010602011771号