面向对象01
1.什么是面向对象?
面向过程&面向对象
-
面向过程思想
- 步骤清晰简单,第一步做什么,第二步做什么…
- 面向过程适合处理一些较为简单的问题
-
面向对象思想
- 物以类聚,分类的思维模式,思考问题首先会解决问题需要那些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。
- 面向对象适合处理复杂问题,适合处理需要多人协作的问题!
-
对于描述复杂的事物,为了从宏观上把握、从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,仍然需要面向过程的思路去处理。
面向对象编程(Object-Oriented Programming,简称OOP)
-
面向对象编程的本质
以类的方式组织代码,以对象的方式组织(封装)数据.
-
抽象
-
三大特性
- 封装
- 继承
- 多态
-
从认识论角度考虑是先有对象后有类。对象是具体的事物,类是抽象的,是对对象的抽象
-
从代码运行角度考虑是先有类后有对象。类是对象的模板。
2.方法的定义、调用(回顾加深)
根据以下知识点对前面所学方法的定义调用进行全面回顾和加深
-
方法的定义
- 修饰符
- 返回值类型
break 和 return 的区别
- 方法名
- 参数列表
- 异常抛出(后面会学,先留作疑问)
-
方法的调用
- 静态方法
- 非静态方法
- 形参和实参
- 值传递和引用传递
- this关键字(后面继承和多态里去讲)
代码实现(回顾):
1.方法定义的相关内容
package com.oop.demo01;
/**
* @author 1301450090@qq.com
* @date 2021/3/28 9:27
*/
public class Demo01 {
/**
* 上面的Demo01为 类
* 下面main为 主方法 程序的入口
*/
public static void main(String[] args) {
}
/**
* 修饰符 返回值类型 方法名(参数类型 参数名){
* //方法体
* return 返回值;
* }
*
* 下面演示中有的没写方法体,只是让我们要道当一个方法具有非空返回值类型时,它必须return一个值!
* return 结束方法,并返回一个值,因此return语句后面不能再写任何语句!
*/
public String sayHello(){
return "Hello,world!";
}
public static int getMax(int a,int b){
int max;
if (a==b){
System.out.println("num1==num2");
}
if (a>b){
max = a;
}else {
max = b;
}
return max;
//三运运算符 return a>b ? a : b;
}
}
2.不能用静态方法去调非静态方法(存在的调用不存在的)
package com.oop.demo01;
/**
* @author 1301450090@qq.com
* @date 2021/3/28 10:31
*/
public class Demo02 {
public static void main(String[] args) {
//非静态方法不能直接调用 要实例化这个类 new
Student student = new Student();
student.say();
}
/**
* 静态方法是和类一起加载的
*/
public static void a(){
// b();不能调用方法b
// 因此一个已经存在的静态方法是无法调到一个不存在的非静态方法
}
/**
* 而非静态方法在类实例化(new)之后才存在
*/
public void b(){
}
}
package com.oop.demo01;
/**
* @author 1301450090@qq.com
* @date 2021/3/28 10:37
*/
public class Student {
/**
* 非静态方法
* */
public void say(){
System.out.println("很多学生在说话");
}
}
3.非静态方法的调用
package com.oop.demo01;
/**
* @author 1301450090@qq.com
* @date 2021/3/28 11:27
*/
public class Demo03 {
public static void main(String[] args) {
//非静态方法 先将其所在的类实例化(即定义类的对象),然后通过 对象名.方法名(实参列表) 调用
//静态方法 直接通过 类名.方法名(实参列表) 调用
Demo03 demo03 = new Demo03();
//赋值调用
int add = demo03.add(1, 2);
//打印输出
System.out.println(add);
}
public int add(int a,int b){
return a+b;
}
}
4.值传递
package com.oop.demo01;
/**
* @author 1301450090@qq.com
* @date 2021/3/28 12:19
*/
public class Demo04 {
/**
* 值传递
*/
public static void main(String[] args) {
int a = 1;
//1
System.out.println(a);
change(a);
//1
System.out.println(a);
}
/**
* 返回值为空
*/
public static void change(int a){
a = 10;
}
}
5.引用传递
package com.oop.demo01;
/**
* @author 1301450090@qq.com
* @date 2021/3/28 12:23
*/
public class Demo05 {
/**
* 引用传递:对象,本质还是值传递
*/
public static void main(String[] args) {
Person person = new Person();
//null
System.out.println(person.name);
Demo05.change1(person);
//若梦
System.out.println(person.name);
}
public static void change1(Person person){
//person是一个对象:指向的是 Person person = new Person; 这是一个具体的人,可以改变属性!
person.name = "若梦";
}
}
/**
* 定义一个Person类,有一个属性:name
*/
class Person{
/**
* 默认为null
*/
String name;
}
如果我的博客对你有一点点帮助,望请大侠可以给文章点个赞再走,你们的鼓励将是我创作优质内容的动力!
声明:因个人能力有限,博文中必有不足之处,望学术同仁不吝赐教!一起学习一起进步!
以上内容均为原创,转载请注明出处!