Java面对对象编程(1)
什么是面向对象(oop)
面向过程&面向对象
面向过程思想(线性思维)
步骤清晰简单,第一步做什么,第二部做什么....
面对过程适合处理一些较为简单的问题
面向过程像流程
面向对象思想()
物以类聚,分类的思维方式,思考问题首先会解决问题需要那些分类,然后对这些分类进行单独思考。最后才对某个分类下的细节进行面向过程的思考。
面向对象适合处理复杂的问题,适合处理需要多人协作的问题!
面向对象像框架
属性加方法变成类
对于描述复杂的事物,为了从宏观上把握,从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到围观操作,仍然需要面对过程的思路去处理
什么是面向对象
面向对象编程(Object-Oriented Programming , OOP)
面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据
抽象
三大特性
封装
继承
多态
从认识论角度考虑是先有对象后有类。对象,对具体的事物。类,是抽象的,是对对象的抽象
从代码运行角度来考虑是先有类后又对象。类是对象的模版
方法的回顾及加深
方法的定义
Java的方法类似于其他语言的函数,是一段用来完成特定功能的代码,一般情况下,定义一个方法包含以下语法:
方法包含一个方法头和一个方法体。下面是一个方法的所有部分:
修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型
返回值类型:方法可能会返回值。returnValueType是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType是关键字void
方法名:是方法的实际名称。方法名和参数表共同构成方法签字
参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
形势参数:在方法被调用时用于接受外界的数据
实参:调用方法时实际传给方法的数据
方法体:方法体包含具体的语句,定义该方法的功能
break 和 return 的区别
break 跳出switch,结束循环
return 代表方法结束 返回值要与返回值类型相同
异常抛出
//main 方法
public static void main(String[] args) {
}
/*
修饰符 返回值类型 方法名(....){
方法体
return 返回值;
}
*/
//return 结束方法 返回一个结果
public String sayHello(){
return "Hello,World";
}
public void hello(){
return;
}
public int max(int a,int b){
return a>b ? a: b;//三元运算符
}
方法调用:递归
调用方法:对象名.方法名(实参列表)
Java支持两种调用方法的方式,根据方法是否返回值来选择
当方法返回一个值的时候,方法调用通常被当做一个值。例如:
int larger = max(30,40);
如果方法返回值是void,方法调用一定是一条语句。
System.out.println("Hello,World!");
静态与非静态方法的调用
//同为静态或非静态都可以直接调用
//如果a为静态,b为非静态 a无法调用b
// static是 和类一起加载的
//非静态 的 b是类实例化之后才存在 所以相当于存在的调用非存在的,不成立
public static void a(){
//b();
}
//b是类实例化之后才存在
public void b(){
}
值传递
解释:实参传递给形参的是值 形参和实参在内存上是两个独立的变量 对形参做任何修改不会影响实参
引用传递
实参传递给形参的是参数对于 堆内存上的引用地址 实参和 形参在内存上指向 了同一块区域 对形参的修改会影响实参
类与对象的关系
类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表某一个具体的事物
动物、植物、手机......
Person类、Pet类、Car类等,这些类都是用来描述/定义某一类具体的事物应该具备的特点和行为
对象是抽象概念的具体实例
张三就是人的一个具体实例,张三家里的旺财是狗就是狗的一个具体实例
能够体现出特点,展现出功能的是具体的实例,而不是一个抽象的概念
创建与初始化对象
使用new关键字
使用new关键字创建的时候,除了分配内存空间之外,还会给创建好的对象进行默认的初始化 以及对类中构造器的调用
类中的构造器也成为构造方法,是在进行创建对象的时候必须要调用的。并且构造器有以下两个特点:
必须和类的名字相同
必须没有返回类型,也不能写void
构造器必须要掌握
//alt+insert 生成构造体
构造器:
1.和类名相同
2.没有返回值
作用:
1.new 本质在调用构造方法
2.初始化对象的值
注意点:
1.定义了有参构造之后,如果想使用无参构造,显示的定义一个无参的构造
小结
/*
1.类与对象
类是一个模版:抽象 对象是一个具体的实例
2.方法
定义、调用
3.对象的引用
引用类型: 基本类型(8)
对象是通过引用来操作的: 栈--->堆
4.属性: 字段Field 成员变量
默认初始化:
数字 0 0.0
char: u0000
boolean: false
引用: null
修饰符 属性类型 属性名 = 属性值
5.方法:
- 必须使用new 关键字创造对象, 构造器 Person Murray = new Person();
- 对象的属性 Murray.name
- 对象的方法 Murray.eat()
6.类:
静态的方法 属性
动态的方法 方法
*/