面向对象编程(OOP)

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

抽象

三大特征:

  • 封装

  • 继承

  • 多态

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

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

回顾方法及加深

方法的定义:

  • 修饰符

  • 返回类型

  • break:跳出switch,结束循环 和return区别 return:结束方法,返回一个值。

  • 参数列表:(参数类型,参数名)...

  • 异常抛出: ( .数组下标异常:Arrayindexoutofbounds 等等......)

 package com.oop.demo01;

import java.io.IOException;

//Demo01 类
public class Demo01 {

    //main方法
    public static void main(String[] args) {

    }

    /*
    修饰符 返回值类型 方法名字(...){
       //方法体
         return 返回值;
     }
     */
    //return 结束方法,返回一个结果。 break:跳出switch,结束循环
    public String sayHello(){
        return "hello,world";
    }

    public void hello(){
        return;
    }

    public int max(int a,int b){
        return a>b ? a : b; //三元运算符!
    }
     //数组下标异常:Arrayindexoutofbounds

    public void readFile(String file) throws IOException{ //(异常)

    }


}

方法的调用:递归

  • 静态方法

  • 非静态方法

  • 形参和实参

 package com.oop.demo01;

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;
    }
}
  • 值传递和引用传递

 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);//1 java 只有引用传递
    }
    //返回值为空
    public static void change(int a){
        a = 10;
    }
}
package com.oop.demo01;

//引用传递: 对象,本质还是传递

//对象,内存!
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); //xiaoming

  }
   public static void change(Person person){
       //person是一个对象:指向的---> Person person = new Person();这是一个具体的人,可以改变属性!
       person.name = "xiaoming";
  }
}

//定义了一个Person类,有一个属性:name
class Person{
   String name; //默认为null
}
  • this关键词

类与对象关系

  • 类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表一个具体的事物。

  • 对象是抽象概念的具体实例。

创建与初始化对象

  • 使用new关键字创建对象

使用new关键字创建的时候,除了分配内存空间之外,还会给创建好的对象进行默认的初始化以及类中构造器的调用。

类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的。并且构造器有以下俩个特点:

  • 1.必须和类名字相同

  • 2.必须没有返回值类型,也不能写void

构造器必须要掌握

构造器: Alt+insert 快捷生成构造器 this.=

1.和类名相同

2.没有返回值

作用:1.new的本质是在调用构造器 2.初始化对象的值

注意点:

1.定义一个有参构造之后,如果想使用无参的构造,就必须显示的定义的一个无参构造。

类与对象小结:

  • 类是一个模板:抽象,对象是一个具体的实例

  • 方法 (定义、调用)

  • 对应的引用

    引用类型: 基本类型(8) 对象是通过引用来操作的:栈--->堆

  • 属性:字段 Filed 成员变量

默认初始化:

数字: 0 0.0

char: u0000

boolean:false

引用:null

修饰符 属性类型 属性名 = 属性值!

  • 对象的创建和使用

    ---必须使用new 关键字创建对象, 必须有构造器 Person xiaoming = new Person ();

    ---对象的属性 xiaoming.name

    ---对象的方法 xiaoming.sleep();

  • 类:

    静态的属性: 属性

    动态的方法: 方法

Day10 类与对象-面向对象编程(1)的更多相关文章

  1. php 类与对象 面向对象编程 简单例子

    <?php class Foo { //类 名称为Foo public $aMemberVar = 'aMemberVar Member Variable'; //类变量 public $aFu ...

  2. javascript总结22: javascript的对象--面向对象编程

    1 对象:JavaScript 中的所有事物都是对象:字符串.数值.数组.函数. 对象与程序的关系: 程序 = 基于对象操作的算法 + 以对象为最小单位的数据结构 此外: 面向对象的本质就是让对象有多 ...

  3. Python 面向对象(创建类和对象,面向对象的三大特性是指:封装、继承和多态,多态性)

    概念:                                                                                                 ...

  4. python 学习笔记7 面向对象编程

    一.概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发"更快更好更强..." ...

  5. Python之路【第五篇】:面向对象编程

    面向对象编程思维导向图

  6. python 面向对象编程(初级篇)

    飞机票 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强...” 面向过程编程最 ...

  7. 面向对象编程其实很简单--python面向对象(初级篇)

    出处:http://www.cnblogs.com/wupeiqi/ 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函 ...

  8. 面向对象编程其实很简单——Python 面向对象(初级篇)

    出处:http://www.cnblogs.com/wupeiqi/ 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函 ...

  9. python - 面向对象编程(初级篇)

    写了这么多python 代码,也常用的类和对象,这里准备系统的对python的面向对象编程做以下介绍. 面向对象编程(Object Oriented Programming,OOP,面向对象程序设计) ...

随机推荐

  1. YOLOV4各个创新功能模块技术分析(三)

    YOLOV4各个创新功能模块技术分析(三)  八.数据增强相关-Stylized-ImageNet 论文名称:ImageNet-trained cnns are biased towards text ...

  2. 单核性能强悍,Core i3 这次又要“默秒全”?

    单核性能强悍,Core i3 这次又要"默秒全"? 在 Intel 历代酷睿处理器中,定位主流级的 Core i3 一直以超高性价比.低功耗.低发热的特点受到广大用户的青睐,在市场 ...

  3. RTOS诊断和错误检查

    RTOS诊断和错误检查 RTOS diagnostics and error checking 查看RTOS显示系列 错误处理不太可能是任何用于嵌入式系统应用程序的操作系统的主要功能.这是资源限制的必 ...

  4. 整理AI性能指标

    整理AI性能指标 Sorting out AI performance metrics 推理性能的最佳衡量标准是什么? 在人工智能加速器的世界里,对于给定的算法,芯片的性能经常以每秒万亿次的运算量(T ...

  5. ApplicationListener接口,在spring容器初始化后执行的方法

    一.如果我们希望在Spring容器将所有的Bean都初始化完成之后,做一些操作,那么就可以使用ApplicationListener接口,实现ApplicationListener接口中的onAppl ...

  6. springboot——重定向解决刷新浏览器造成表单重复提交的问题(超详细)

    原因:造成表单重复提交的原因是当我们刷新浏览器的时候,浏览器会发送上一次提交的请求.由于上一次提交的请求方式为post,刷新浏览器就会重新发送这个post请求,造成表单重复提交. 解决办法: 将请求当 ...

  7. NX二次开发-曲线或边分析函数

    UF_EVAL_is_arc   判断是圆形曲线或边UF_EVAL_ask_arc 圆形曲线或边分析,得到曲线或边的信息 类似的函数还有以下这些: UF_EVAL_is_ellipse // 椭圆UF ...

  8. 【NX二次开发】用户出口函数介绍

    用户出口(User Exit)是NX Open 中的一个重要概念.NX在运行过程中某些特定的位置存在规定的出口,当进程执行到这些出口时,NX会自动检查用户是否在此处已定义了指向内部程序位置的环境变量: ...

  9. 关于MySQL索引面试题的六连炮!招架的住吗?

    1.面试真题 MySQ索引的原理和数据结构能介绍一下吗? b+树和b-树有什么区别? MySQL聚簇索引和非聚簇索引的区别是什么? 他们分别是如何存储的? 使用MySQL索引都有哪些原则? MySQL ...

  10. Golang学习(用代码来学习) - 第四篇

    /** 一个用来进行go routine的函数 */ func print_something(msg string){ for i:= 0;i < 5;i++{ time.Sleep(1 * ...