Java基础Day04
面向对象
Java的核心思想就是OOP
面向对象和面向过程
面向过程思想
- 步骤清晰简单 第一步干什么 第二步做什么…(线性)
- 面向过程适合处理一些较为简单的问题
面向对象思想
- 物以类聚,分类的思维方式,思考问题首先会解决问题需要哪些分类,再对这些分类进行单独思考。最后对某个分类下的细节进行面向过程的思索。
- 面向对象适合处理复杂的问题,适合处理需要多人协作的问题!
面对复杂的事物,宏观上把握,整体上分析,需要使用面向对象的思路来分析整个系统。但是具体微观操作我们需要面向过程的思路去处理。
什么是面向对象
面向对象编程(Object-Oriented Programming,OOP)
本质:以类的方式组织代码,以对象的组织(封装)数据
抽象
三大特性:
- 封装
- 继承
- 多态
从认识的角度:现有对象后有类。对象是具体事物;类是对对象的抽象。
从代码运行角度:先有类后有对象。类是对象的模板。
回顾方法及加深
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类等
- **对象是抽象概念的具体实例。**例如:张三就是人的一个具体实例,张三家里的旺财就是狗的一个具体实例等
创建和初始化对象
- 使用new关键字创建对象。会分配内存空间,还会给 创建好的对象 就进行默认的初始化,以及类中构造器的调用
- 类中的构造器也被称为构造方法,是在进行创建对象的时候必须要调用的。构造器的二个特点:一是必须和类的名字相同;二是必须没有返回类型,也不能写void
- 构造器必须掌握
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
小结
- 类与对象
类是一个模板:抽象,对象是一个具体的实例
方法 定义,调用!
对应的引用 引用类型:八大基本类型
对象是通过引用来操作的:栈–>堆
- 属性:字段field 成员变量
默认初始化:
数字: 0 0.0
char: u0000
boolean:false
引用:null
修饰符 属性变量 属性名 = 属性值!
对象的创建和使用
~必须使用new 关键字创建对象,构造器Person person = new Person();
~对象的属性 person.name
~对象的方法 person.sleep()
类:
静态的属性 属性
动态的行为 方法
Java基础Day04相关推荐
- 小汤学编程之JAVA基础day04——流程结构
一.认识流程图 二.顺序结构 三.选择结构 四.循环结构 五.扩展&代码块的概念 一.认识流程图 二.顺序结构 体现在程序进入某个方法后,从上到下没有分支的顺序执行. 三.选择结构 1.if选 ...
- Java基础 DAY04
程序流程控制 在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的,主要有三大流程控制语句 1)顺序控制 2)分支控制 3)循环控制 顺序控制 程序从上到下逐行地执行,中间没有任何判断和 ...
- Java基础 Day04(个人复习整理)
分支结构 2.switch语句 因为if语句的级联式最多只会处理三种情况,如果出现多情况 1>可以继续使用if语句的级联式,但是可能代码的可读性就会变差. 2>采用switch语句来解决. ...
- 第一阶段:Java基础总复习一一一和一一一面向对象OOP总复习
一.Java基础 0.Maven的介绍: 官网:https://maven.apache.org/download.cgi (1)Maven是什么? Maven 是 Apache 开源组织奉献的一个开 ...
- Java基础语法-双色球彩票
Java基础语法-双色球彩票 任务概述 今天的任务,是完成双色球彩票程序. 玩法规则:"双色球"每注投注号码由6个红色球号码和1个蓝色球号码 组成.红色球号码从1-33中选择,蓝色 ...
- Java基础入门语法和安装
1. Java概述 1.1 Java语言背景介绍(了解) 语言:人与人交流沟通的表达方式 计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言 Java语言是美国Sun公司(Stanford Un ...
- Java笔记整理-02.Java基础语法
1,标识符 由英文字母.数字._(下划线)和$组成,长度不限.其中英文字母包含大写字母(A-Z)和小写字母(a-z),数字包含0到9. 标识符的第一个字符不能是数字(即标识符不能以数字开头). 标识符 ...
- java基础(十三)-----详解内部类——Java高级开发必须懂的
java基础(十三)-----详解内部类--Java高级开发必须懂的 目录 为什么要使用内部类 内部类基础 静态内部类 成员内部类 成员内部类的对象创建 继承成员内部类 局部内部类 推荐博客 匿名内部 ...
- Java基础概念性的知识总结
属于个人的所学的知识总结,不是全面的 1.JDK.JRE和JVM三者的区别 01.JDK:(Java Development ToolKit)Java开发工具包,是整个Java的核心.包括了Java的 ...
- 我的面试标准:第一能干活,第二Java基础要好,第三最好熟悉些分布式框架!...
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:hsm_computer www.cnblogs.com/J ...
最新文章
- NYOJ 30 Gone Fishing JAVA+解析
- [JavaWebService-axis]-环境搭建
- 为什么有时打不开爬取到的图片
- webservice的css哪里添加,jQuery_XML+XSLT+CSS+JQuery+WebService组建Asp.Net网(2), 3. 更 - phpStudy...
- C++跳过(忽略)指定字符
- windos dos命令
- python center函数_数据类型和数据结构(三):字符串(4) 字符串内置函数(1)
- NIFI如何利用eclipse开发自己的Processor(下)
- BZOJ 1070: [SCOI2007]修车
- php memcache技术,Memcache操作类如何在PHP中使用
- [sed] linux sed 批量替换字符串-转
- php preg split,php preg_split()字符串分割函数的使用方法
- Java Graphics2D 在图片上画(微信昵称)含有特殊符号(Emoji)的文字
- cron 在线表达式
- linux ubi 分区,ubi卷重分区及卷创建流程解析
- 迈微科讯 | 最新科技发展资讯
- 《千手智能打铃》使用说明
- c语言中scanf返回值被忽略,返回值被忽略scanf是什么意思
- php gbk 拼音,php 基于gbk和 Ascii把汉字转换为拼音
- 农民伯伯2009年夜总结
热门文章
- ElasticSearch 7.15.2 使用java canal 接入实现灵活化增量数据准实时同步
- cordic ip核 vivado_Xilinx Vivado Cordic 核的使用
- 小象学院python网课值得吗-2018最新小象学院Python数据分析视频教程升级版第2期...
- uniapp引入font-awsome字体图标-疑难解决
- 绝地反击:我的战胜贫困的经历01(转载、整理)
- Aho-Corasick懵逼学习
- 关于欧拉四面体公式的推导及证明过程
- 2020-12-09
- 数据库系统原理练习题
- 钢笔墨水能否代替打印机墨水_打印机墨水怎么分类?