面向对象

Java的核心思想就是OOP

面向对象和面向过程

面向过程思想

  • 步骤清晰简单 第一步干什么 第二步做什么…(线性)
  • 面向过程适合处理一些较为简单的问题

面向对象思想

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

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

什么是面向对象

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

  • 本质:以类的方式组织代码,以对象的组织(封装)数据

  • 抽象

  • 三大特性:

  1. 封装
  2. 继承
  3. 多态

从认识的角度:现有对象后有类。对象是具体事物;类是对对象的抽象。

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

回顾方法及加深

1. 方法的定义

  • 修饰符
  • 返回类型
package com.oop.demo01;import java.io.IOException;//Demo01类
public class Demo01 {//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;//三元运算符}public  void readFile(String file) throws IOException{return;}
}
  • break和return的区别

break:跳出switch,结束循环

return:结束方法 返回一个结果

  • 方法名:注意规范 见名知意
  • 参数列表:(参数类型 参数名)可变长参数(…)
  • 异常抛出:

2.方法的调用:递归

  • 静态方法
  • 非静态方法
package com.oop.demo01;public class Demo02 {//1.静态方法 staticpublic static void main(String[] args) {Student.say();//2.非静态方法//实例化这个类 new//对象类型 对象名 = 对象值;Student student = new Student();student.say01();}//static是和类一起加载的public void a(){b();}//类实例化 之后才存在的public void b(){}
}
package com.oop.demo01;//学生类
public class Student {//静态方法public static void say(){System.out.println("男同学说话了");}//非静态方法public void say01(){System.out.println("女同学说话了");}
}
  • 形参和实参
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);//1Demo04.change(a);System.out.println(a);//1}//返回值为空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);//nullDemo05.change(person);System.out.println(person.name);//天天}public static void change(Person person) {//person是一个对象:指向的 ---> Person person = new Person();//这是一个具体的人 可以改变属性!person.name = "天天";}
}//定义了一个Person类 有一个属性:name
class Person{String name;//null
}
  • this关键字(继承里面)

类与对象

  • **类是一种抽象的数据类型 它是对某一类事物整体描述或者定义,但是并不能代表某一个具体的事物。**例如:动物,植物,手机,电脑,Person类、Car类等
  • **对象是抽象概念的具体实例。**例如:张三就是人的一个具体实例,张三家里的旺财就是狗的一个具体实例等

创建和初始化对象

  1. 使用new关键字创建对象。会分配内存空间,还会给 创建好的对象 就进行默认的初始化,以及类中构造器的调用
  2. 类中的构造器也被称为构造方法,是在进行创建对象的时候必须要调用的。构造器的二个特点:一是必须和类的名字相同;二是必须没有返回类型,也不能写void
  3. 构造器必须掌握
package com.oop.demo02;//学生类
public class Student {//属性:字段String name;//nullint age;//0//方法public  void study(){System.out.println(this.name + "在学习");}
}
package com.oop.demo02;//一个项目应该只存在一个main方法
public class Application {public static void main(String[] args) {//类:抽象的,实例化//类实例化后会返回一个自己的对象//student对象就是一个student类的具体实例!Student Tom = new Student();Student Bob = new Student();Tom.name = "Tom";Tom.age = 3;System.out.println(Tom.name);//TomSystem.out.println(Tom.age);//3}
}

构造器

package com.oop.demo02;public class Person {//一个类即使什么都不写 他也会存在一个方法//显示定义构造器String name;int age;//实例化 初始值//1.使用new关键字 本质还是在调用构造器//2.用来初始化值public Person(){}//有参构造:一旦定义有参构造,无参必须显示定义public Person(String name,int age){this.name = name;this.age = age;}}
/*
public static void main(String[] args) {//new 实例化了一个person对象Person person = new Person("栀夏",21);System.out.println(person.name+" "+person.age);}构造器:1.和类名相同2.没有返回值作用:1.new 本质在调用构造方法2.初始化对象的值注意点:1.定义在有参构造之后,如果想使用无参构造,显示的定义一个无参的构造Alt + Insert(快速构造哦)this.() = ();*/

创建内存分析

package com.oop.demo03;public class Pet {public String name;public int age;public void shout(){System.out.println("叫了一声");}/*public Pet(String name, int age) {this.name = name;this.age = age;}*/
}
/*public static void main(String[] args) {Pet dog = new Pet();dog.name = "旺财";dog.age = 3;dog.shout();System.out.println(dog.name);System.out.println(dog.age);}*/
叫了一声
旺财
3

小结

  1. 类与对象

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

  1. 方法 定义,调用!

  2. 对应的引用 引用类型:八大基本类型

对象是通过引用来操作的:栈–>堆

  1. 属性:字段field 成员变量

默认初始化:

​ 数字: 0 0.0

​ char: u0000

​ boolean:false

​ 引用:null

​ 修饰符 属性变量 属性名 = 属性值!

  1. 对象的创建和使用

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

    ~对象的属性 person.name

    ~对象的方法 person.sleep()

  2. 类:

    静态的属性 属性

    动态的行为 方法

Java基础Day04相关推荐

  1. 小汤学编程之JAVA基础day04——流程结构

    一.认识流程图 二.顺序结构 三.选择结构 四.循环结构 五.扩展&代码块的概念 一.认识流程图 二.顺序结构 体现在程序进入某个方法后,从上到下没有分支的顺序执行. 三.选择结构 1.if选 ...

  2. Java基础 DAY04

    程序流程控制 在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的,主要有三大流程控制语句 1)顺序控制 2)分支控制 3)循环控制 顺序控制 程序从上到下逐行地执行,中间没有任何判断和 ...

  3. Java基础 Day04(个人复习整理)

    分支结构 2.switch语句 因为if语句的级联式最多只会处理三种情况,如果出现多情况 1>可以继续使用if语句的级联式,但是可能代码的可读性就会变差. 2>采用switch语句来解决. ...

  4. 第一阶段:Java基础总复习一一一和一一一面向对象OOP总复习

    一.Java基础 0.Maven的介绍: 官网:https://maven.apache.org/download.cgi (1)Maven是什么? Maven 是 Apache 开源组织奉献的一个开 ...

  5. Java基础语法-双色球彩票

    Java基础语法-双色球彩票 任务概述 今天的任务,是完成双色球彩票程序. 玩法规则:"双色球"每注投注号码由6个红色球号码和1个蓝色球号码 组成.红色球号码从1-33中选择,蓝色 ...

  6. Java基础入门语法和安装

    1. Java概述 1.1 Java语言背景介绍(了解) 语言:人与人交流沟通的表达方式 计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言 Java语言是美国Sun公司(Stanford Un ...

  7. Java笔记整理-02.Java基础语法

    1,标识符 由英文字母.数字._(下划线)和$组成,长度不限.其中英文字母包含大写字母(A-Z)和小写字母(a-z),数字包含0到9. 标识符的第一个字符不能是数字(即标识符不能以数字开头). 标识符 ...

  8. java基础(十三)-----详解内部类——Java高级开发必须懂的

    java基础(十三)-----详解内部类--Java高级开发必须懂的 目录 为什么要使用内部类 内部类基础 静态内部类 成员内部类 成员内部类的对象创建 继承成员内部类 局部内部类 推荐博客 匿名内部 ...

  9. Java基础概念性的知识总结

    属于个人的所学的知识总结,不是全面的 1.JDK.JRE和JVM三者的区别 01.JDK:(Java Development ToolKit)Java开发工具包,是整个Java的核心.包括了Java的 ...

  10. 我的面试标准:第一能干活,第二Java基础要好,第三最好熟悉些分布式框架!...

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:hsm_computer www.cnblogs.com/J ...

最新文章

  1. NYOJ 30 Gone Fishing JAVA+解析
  2. [JavaWebService-axis]-环境搭建
  3. 为什么有时打不开爬取到的图片
  4. webservice的css哪里添加,jQuery_XML+XSLT+CSS+JQuery+WebService组建Asp.Net网(2), 3.       更 - phpStudy...
  5. C++跳过(忽略)指定字符
  6. windos dos命令
  7. python center函数_数据类型和数据结构(三):字符串(4) 字符串内置函数(1)
  8. NIFI如何利用eclipse开发自己的Processor(下)
  9. BZOJ 1070: [SCOI2007]修车
  10. php memcache技术,Memcache操作类如何在PHP中使用
  11. [sed] linux sed 批量替换字符串-转
  12. php preg split,php preg_split()字符串分割函数的使用方法
  13. Java Graphics2D 在图片上画(微信昵称)含有特殊符号(Emoji)的文字
  14. cron 在线表达式
  15. linux ubi 分区,ubi卷重分区及卷创建流程解析
  16. 迈微科讯 | 最新科技发展资讯
  17. 《千手智能打铃》使用说明
  18. c语言中scanf返回值被忽略,返回值被忽略scanf是什么意思
  19. php gbk 拼音,php 基于gbk和 Ascii把汉字转换为拼音
  20. 农民伯伯2009年夜总结

热门文章

  1. ElasticSearch 7.15.2 使用java canal 接入实现灵活化增量数据准实时同步
  2. cordic ip核 vivado_Xilinx Vivado Cordic 核的使用
  3. 小象学院python网课值得吗-2018最新小象学院Python数据分析视频教程升级版第2期...
  4. uniapp引入font-awsome字体图标-疑难解决
  5. 绝地反击:我的战胜贫困的经历01(转载、整理)
  6. Aho-Corasick懵逼学习
  7. 关于欧拉四面体公式的推导及证明过程
  8. 2020-12-09
  9. 数据库系统原理练习题
  10. 钢笔墨水能否代替打印机墨水_打印机墨水怎么分类?