面向对象编程

Java的核心思想就是OOP

一.面向过程&面向对象

面向过程思想:

  1. 步骤清晰简单,第一步做什么,第二步做什么......
  2. 面对过程适合处理一些较为简单的问题

面向对象思想:

  1. 物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考,最后,才对某个分类下的细节进行面向过程的思索
  2. 面向对象适合处理复杂的问题,适合处理需要多人协作的问题

对于描述复杂的事物,为了从宏观上把握,从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到为微观操作。仍然需要面向过程的思路去处理。

二.什么是面向对象

面向对象编程(Object-Oriented Programming,OOP)

面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据

抽象

三大特性:

  • 封装
  • 继承
  • 多态

从认识角度考虑是先有对象后有类。对象,是具体的事物。类,是抽象的,是对对象的抽象。

从代码运行角度考虑是先有类后有对象。类是对象的模板。

三.方法回顾

1.方法的定义

package oop;

//demo01  类
public class demo01 { //main方法
public static void main(String[] args) { } /*
修饰符 返回值类型 方法名(。。。){
方法体
return 返回值;
}
*/
//return结束方法,返回一个结果
public String sayHello(){
return "HelloWorld";
}
public void hello(){
return;
}
public int max(int a,int b){
return a > b ? a : b;//三元运算符
}
}

2.方法的调用

package oop;

public class demo02 {
public static void main(String[] args) {
Student.say(); //非静态方法无法直接调用
//实例化这个类 new
//对象类型 对象名字=对象值
Student student = new Student();
student.say1(); }
//和类一起加载的
public static void a(){
//b();无法调用,报错
}
//类实例化之后才存在
public void b(){ }
}

package oop;

//学生类
public class Student { //静态方法
public static void say(){
System.out.println("学生说话了");
} //非静态方法
public void say1(){
System.out.println("学生说话了");
}
}

3.实参和形参

package oop;

public class demo03 {
public static void main(String[] args) {
//形式参数与形式参数的类型要一一对应
int add = demo03.add(1, 2);
System.out.println(add);
} public static int add(int a,int b){
return a+b;
}
}

4.值传递和引用传递

package oop;

//引用传递:对象,本质还是值传递
public class demo05 {
public static void main(String[] args) {
person person = new person();
System.out.println(person.name);//null
demo05.change(person);
System.out.println(person.name);
}
public static void change(person person){
//person是一个对象,指向的 person person = new person();这是一个具体的人,可以改变属性
person.name="LiLiLiYH";//LiLiLiYH
}
}
//定义了一个person类,有一个属性name
class person{
String name;//null
}

Day12-面向对象初识的更多相关文章

  1. day22.面向对象初识

    1.面向对象引入 先来创建一个小游戏:人狗大战 # 定义一个狗 def Gog(name,blood,aggr,kind): dog = { 'name':name, 'blood':blood, ' ...

  2. python之面向对象初识

    一.面向对象初识 1.结构上 面向对象分成两部分:属性.方法 class A: name = 'xiaoming' # 静态属性.静态变量.静态字段. def func1(self): # 函数.动态 ...

  3. python基础(17)继承类和面向对象初识

    1.继承类 class Lm: money = 1000000 house = 5 def driver(self): print('会开车') class Mcb(Lm): def about_me ...

  4. day06_雷神_面向对象初识

    day_06 递归函数 自己用自己.一般递归100多次,都没有解决的问题,放弃递归. count = 0 def func1(): global count count += 1 print(coun ...

  5. 《Python》 面向对象初识

    一.面向对象初识: 1.结构上理解:类由两部分组成 class  A: # class是类的关键字,类名首字母默认大写 name = 'alex' # 静态属性,静态变量,静态字段 def  func ...

  6. python递归 及 面向对象初识及编程思想

    递归 及 面向对象初识及编程思想   一.递归 1.定义: 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. (1)递归就是在过程或函数里调用自身: (2)在使用递 ...

  7. python基础学习笔记——面向对象初识

    面向对象初识 python中一切皆对象. 类有两种: 新式类:在py3中所有类都是新式类 经典类:在py2中只有类本身继承了object类才叫做新式类,默认是经典类 class Person: cou ...

  8. Python中面向对象初识到进阶

    面向对象初识到进阶 # 面向对象结构: # class 类名: # def __init__(self,参数1,参数2): # self.对象的属性1 = 参数1 # self.对象的属性2 = 参数 ...

  9. Python面向对象01 /面向对象初识、面向对象结构、类、self、实例化对象

    Python面向对象01 /面向对象初识.面向对象结构.类.self.实例化对象 目录 Python面向对象01 /面向对象初识.面向对象结构.类.self.实例化对象 1. 面向对象初识 2. 面向 ...

  10. python 面向对象专题(一):面向对象初识、面向对象结构、类、self、实例化对象

    https://www.cnblogs.com/liubing8/p/11301344.html 目录 Python面向对象01 /面向对象初识.面向对象结构.类.self.实例化对象 1. 面向对象 ...

随机推荐

  1. Android版本功能

    Android 1.0 2008年9月23日,发布Android操作系统中的第一个正式版本:Android 1.0(Astro"铁臂阿童木").全球第一台Android设备HTC ...

  2. ts的接口和泛型的基本语法

    一.接口 1.接口定义 接口是一种规范的定义,它定义行为和规范,在程序设计中接口起到限制和规范的作用. 2.接口的声明与使用 //声明对象类型接口 interface Person {   name: ...

  3. Delphi 自定义窗体类名

    原理就是覆盖原CreateParams函数,重写新CreateParams函数,在新CreateParams函数继承完之后马上修改Parames.WinClassName type TForm1 = ...

  4. vue2源码学习2vuex&vue-router

    1.vue插件编写 插件可以实现对象vue的拓展,比如新增全局属性/方法,添加实例方法,使用mixin混入其他配置项等等.编写插件必须要实现 install 方法,当调用Vue.use()使用插件时, ...

  5. python之路5:常用模块

    模块简介 time & datetime模块 random os sys shutil json & pickle shelve xml处理 configparser hashlib ...

  6. notepad++设置

    1.背景颜色 [设置]-[语言格式设置] 选择主题:Solarized-light

  7. CAD坐标显示不全怎么办?CAD坐标常见问题解答!

    今天小编来和大家聊一下浩辰CAD看图王中关于CAD坐标的那些事,比如:CAD坐标为何显示不全?CAD坐标显示结果和之前不一样?以及不能精准捕捉CAD坐标等情况,应该如何轻松解决?今天就和小编一起来了解 ...

  8. 解决django中的跨域问题

    解决django中的跨域问题: Django项目中出现跨域问题,用第三方包django-cors-headers来解决跨域问题. 安装:pip install django-cors-headers; ...

  9. python中的链表推导式

    python中的链表推导式 博客分类: Python Python  num=[1,2,3] myvec=[[x,x*2] for x in num] #嵌套一个链表,格式为一个数和他的平方 prin ...

  10. mysql 删除商品名字重复数据,同时保留最新一条

    delete goods where goods_id in (SELECT goods_id FROM goodswhere goods_name in (select goods_name fro ...