面向对象编程(Object-Oriented Programming, OOP)
Java的核心思想就是面向对象,简称oop。
面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据。
它本身是抽象的
且具有三大特性:
- 封装
- 继承
- 多态
要分清楚面向过程和面向对象的区别:
面向过程思想:
- 步骤清晰简单,第一步做什么,第二步做什么....
- 面对过程适合处理一些较为简单的问题。
面向对象思想:
- 物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。
- 面向对象适合处理复杂的问题,适合处理需要多人协作的问题!
回顾方法:
方法的定义 :
看一个简单的代码:
package com.oop.demo01;
// Demo01就是一个类
public class Demo01 {
// main方法
public static void main(String[] args) {
}
/*
修饰符 返回值类型 方法名(...){
//方法体
//return 返回值
}
*/
// return 结束方法,返回一个结果
public String sayHello(){
return "Hello World!";
}
public int max(int a,int b){
return a>b ? a :b;//三元运算符
}
}
break和return的区别:
break是用于跳出循环体,return是用于结束方法并返回一个结果。4
方法的调用:
写了一个简单的Student类,并再其中写了一个方法,
package com.oop.demo01;
//学生类
public class Student {
public void say(){
System.out.println("学生说话了");
}
}
有创建了一个Demo专门来调用Student里的方法:
package com.oop.demo01;
public class Demo02 {
public static void main(String[] args) {
/* 静态方法调用:直接调用
Student.say();
*/
// 非静态方法调用 实例化这个类 new
Student student = new Student();
student.say();
}
// 静态方法是和类一起加载的
public static void a(){
}
// 非静态方法是类实例化后才存在的,它们之间无法相互调用
public void b(){
}
}
像我的学生类里的方法是非静态的(就是没有static)
调用方法如下:
如果方法加上static也就是静态方法时,就可以直接调用:
分为两个看更清楚:
再补充一点:静态方法和非静态方法之间是不可以调用的:
原因如上图里的注释。
最后再看一下值传递和引用传递(理解就好):
值传递:
package com.oop.demo01;
//值传递
public class Demo04 {
public static void main(String[] args) {
int a = 1;
System.out.println(a);
Demo04.change(a);
System.out.println(a);
}
public static void change(int a){
a = 10;
}
}
上述代码就是一个简单的值传递,因为没有返回值,所以输出的a仍然为1:
因为没有返回值:
所以如下图:
引用传递(本质也是值传递) :他是直接通过对象传递值的
package com.oop.demo01;
//引用传递
public class Demo05 {
public static void main(String[] args) {
// 实例化了Person类
Person person = new Person();
System.out.println(person.name);
// 直接通过对象传递值
Demo05.change(person);
System.out.println(person.name);
}
public static void change(Person person){
person.name = "华子";
}
}
//创建了一个Person类
class Person{
String name;
}
输出结果为: