一、Java面向对象编程基础

1、什么是对象?Object 什么都是对象

只要是客观存在的具体事物,都是对象(汽车、小强、事件、任务、按钮、字体)

2、为什么需要面向对象?

面向对象能够像分析现实生活问题的方式,来分析和实现计算机问题。

拉近了现实世界和计算机世界之间的距离。

Scanner sc = new Scanner(System.in);

sc.next(); sc.nextInt();

对象有什么特点?

对象可以反复使用的;每个对象功能尽可能单一(各司其职、各尽所能),String类专门用于处理字符串;

好处:提高代码的可复用性、易维护性;

软件工程理念:高内聚、低耦合;

高内聚:每个类(对象)功能尽可能完备,自给自足。

(可复用性)java.lang.String类

低耦合:对象之间的关系尽可能弱;(易维护性)

3、如何面向对象?Object Oriented  OO

OOA:面向对象分析,问题空间。

OOD:面向对象设计,解空间。

OOP:面向对象编程,编程实现。

面向对象的关键:抽象

针对不同类型的对象,进行分析,找出共性。

数据抽象-属性

业务抽象-方法

1、将对象的共性进行抽取,抽象一种类型 class;

对象 -> 类——泛化

类是对象的抽象、模板、蓝图

package day06;

public class Animal{

//有什么?数据抽象——属性、成员变量(全局变量)

String name;   //名称,

int age;           //年龄

//会什么?业务抽象——方法

//吃 eat

//public void eat(String food){

System.out.printly(name + “eat” + food);

}

}

2、使用类来创建对象 new “特化” “实例化”

对象是类的一个具体事例(Instance)

package day06;

public class TestAnimal{

public static void main(String[] args){

Animal a1 = new Animal();

a1.mane = "小强”;

a1.age = 3;

a1.eat("巧克力");

}

}

4、类语法结构分析

语法:[]表示可选的部分

package 包名;

[修饰符] class 类名

[extends 父类] [implements 接口1,接口2,...]

{//类体

[属性、成员变量]

[构造方法]

[方法]

}

(1)属性 field域,对象中保存数据的区域

语法:  Attribute属性

[修饰符] 数据类型  属性名 [=初始值];

规律:对象创建,开辟空间,属性有默认值(同数组元素默认值

1)数值类型: 0或0.0;

2)字符型char:‘\u0000’

3)布尔型boolean false

4)引用类型ref  null    reference引用

(2)方法 method

语法:

[修饰符] 返回值类型 方法名(参数表)

[throws 声明抛出的异常]

{    //方法体

返回值类型是void,无需返回任何结果

可以通过return;语句提前结束方法调用

返回值类型不是void,必须写return xxx;

xxx可以是:常量、变量、表达式、方法调用

}

方法的重载 Overload

class Person{

public void 吃饭(饭 f){

...

}

public void 吃面(面 m){

...

}

public void 吃药(药 y){

...

}

}

定义:(一般在一个类中)

方法名相同,参数表不同(类型、数量、顺序)

注意:返回值类型是否相同不作为重载的依据;

用途:便于程序员的使用,只需记忆少量的方法名,通过传入不同的参数,来区分不同方法。

class Person{

public void 吃饭(饭 f){

。。。

}

}

练习:设计一个类TestAdd 实现不同类型数据的和

5、构造方法 Constructor

也称为:构造函数、构造器、构造子、构造

class Animal{

String name;

public Animal(){

}

}

要点:

1)使用类名作为方法名;

2)没有返回值类型,连void都不能有;

3)用途:初始化属性;

4)调用时机:伴随着对象创建而调用,new;

new Animal();调用无参构造方法

5)构造方法也可以重载(方法名相同,参数表不同);

分析以下两行代码执行步骤细节:

Animal a1 = new Animal("加菲猫",3);

a1.eat(“意大利面”);

(1)JVM第一次认识某个类:类加载

JVM加载Animal.class文件,将类的信息读入Code区,中作为对象的模板,可以创建对象。

(2)Animal a1 在栈区分配变量a1;

(3)new 对象,在Heap堆区分配空间,创建对象;

属性提供默认值:name null,age 0;

(4)构造方法伴随对象创建而调用,执行有参构造;

初始化属性:name “加菲猫”,age 3;

(5)对象地址赋值给a1;

(6)平时说:调用a1对象的eat方法;

严格说:针对a1指向对象调用Code区中Animal类的eat方法,参数“意大利面。”

6、系统会为每个类提供公开的、无参的、空实现的、默认的构造方法。

public Animal(){}

一旦我们自定义构造方法,默认的就会消失;

要求:也自定义无参构造,避免丢失。

7、this关键字,表示当前对象(当前正在运行的对象)

this.成员:成员包括属性和方法;

主要用于this.属性;

目的:区分同名成员变量和局部变量;

this.name = name;

8、this():表示调用本类其他构造方法,可以传参数;

目的:复用其他构造方法的代码;

结论:构造方法只能在构造方法的第一行调用;

Animal():不对;this():才对。

练习:

1、设计一个员工类Emp

(1)属性:String name、int age、double salary;

(2)购置方法:两个无参、全参;重载;public Emp(){} 、name、age、salary;

(3)方法:工作;

public void work(String deptName)

打印name在deptName 上班

2、使用测试类TestEmp创建其对象并使用

Tom  23  7000.0  研发

Mary 21  8000.0  测试

面向对象编程:

找到合适的类,创建对象,提供数据属性,调用方法,得到结果。

找caiPiao类,   cp1             25,5              create        ds

复习:

面向对象编程基础:

一、什么是对象?什么都是

二、为什么需要面向对象?

拉近了现实世界和计算机世界的距离;能够以分析现实生活问题的方式来分析和实现计算机问题。

类、对象的特点:

1)可复用;

2)对象功能尽可能单一(各司其职、各尽所能)

软件工程理念:高内聚、低耦合;

高内聚:每个对象功能完备(自给自足)

CaiPiao类 功能:就是生产彩票数据

cp1.create = new CaiPiao(25,5);

int[] ds = cp1.create();

3)如何面向对象?OO Object Oriented

OOA  分析  问题空间

OOD  设计  解空间

OOP  编程  实现、使用

面向对象的关键:抽象(类)、

(1)将同类对象进行抽象,形成一个类class;

数据抽象:属性;

业务抽象:方法;

类是对象的抽象、模板、蓝图

对象是类的一个具体实例Instance

(2)使用类创建对象new“实例化”、“特化”

属性:创建对象后,属性有默认值(规律同数组)

1)数组类型:0或者0.0

2)字符型char:‘\u0000’

3)布尔型boolean:false

4)引用型:null

三、方法的重载:

Arrays.sort(ds);int【】

Arrays.sort(cs);char【】

四、构造方法;

String s1 = Arrays.toString(ds1);

将ds1数组数据生成如下String对象返回【1,3,5,。。。7,9】

Java面向对象编程基础的更多相关文章

  1. JAVA学习(五):Java面向对象编程基础

    Java面向对象编程基础 面向对象(Object oriented programming,OOP)技术是一种强有力的软件开发方法,它採用数据抽象与信息隐藏技术,来使软件开发简单化,以达到代码重用的目 ...

  2. [Java入门笔记] 面向对象编程基础(二):方法详解

    什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能上来看,方法都有点类似与函数.但是,方法与传统的函数还是有着不同之处: 在 ...

  3. 面向对象编程基础(java)

    面向对象编程基础 1.1 面向对象概述 在程序开发初期,大家使用的是结构化开发语言,也就是面向过程(opp),但随着市场需求剧增,软件的规模也越来越大,结构化语言的弊端也暴露出来. 开发周期无休止的拖 ...

  4. 第二章 Matlab面向对象编程基础

    DeepLab是一款基于Matlab面向对象编程的深度学习工具箱,所以了解Matlab面向对象编程的特点是必要的.笔者在做Matlab面向对象编程的时候发现无论是互联网上还是书店里卖的各式Matlab ...

  5. java 面向对象编程。。。。

    经过一周的学习(java),总结了许多,对java的理解,java的类型,运用,安装,基础语法,变量,常量,表达式,语句 java从C语言中继承了大量语言特性.java面向对象编程的基本特征,包括继承 ...

  6. Matlab面向对象编程基础

    DeepLab是一款基于Matlab面向对象编程的深度学习工具箱,所以了解Matlab面向对象编程的特点是必要的.笔者在做Matlab面向对象编程的时候发现无论是互联网上还是书店里卖的各式Matlab ...

  7. 大数据技术之_16_Scala学习_04_函数式编程-基础+面向对象编程-基础

    第五章 函数式编程-基础5.1 函数式编程内容说明5.1.1 函数式编程内容5.1.2 函数式编程授课顺序5.2 函数式编程介绍5.2.1 几个概念的说明5.2.2 方法.函数.函数式编程和面向对象编 ...

  8. JAVA面向对象编程课程设计——web版斗地主

    一.团队课程设计博客链接 JAVA面向对象编程课程设计--网络版单机斗地主 二.个人负责模块或任务说明 实体类的设计 斗地主规则的实现 人机自动出牌的算法 实现数据库的DAO模式 三.自己的代码提交记 ...

  9. Objective-C 基础教程第三章,面向对象编程基础知

    目录 Objective-C 基础教程第三章,面向对象编程基础知 0x00 前言 0x01 间接(indirection) 0x02 面向对象编程中使用间接 面向过程编程 面向对象编程 0x03 OC ...

随机推荐

  1. 【转】FIO使用指南

    原文地址:http://blog.csdn.net/yuesichiu/article/details/8722417 Fio压测工具和io队列深度理解和误区 这个文档是对fio-2.0.9 HOWT ...

  2. Hadoop(十三)分析MapReduce程序

    前言 刚才发生了悲伤的一幕,本来这篇博客马上就要写好的,花了我一晚上的时间.但是刚才电脑没有插电源就没有了.很难受!想哭,但是没有办法继续站起来. 前面的一篇博文中介绍了什么是MapReduce,这一 ...

  3. [mysql使用(3)] 使用mysql的时候遇到的一些错误

    1.Err1055,出现这个问题往往是在执行sql语句时候,在最后一行会出现这个问题. [Err] 1055 - Expression #1 of ORDER BY clause is not in ...

  4. Yii2之类自动加载

    在yii中,程序中需要使用到的类无需事先加载其类文件,在使用的时候才自动定位类文件位置并加载之,这么高效的运行方式得益于yii的类自动加载机制. Yii的类自动加载实际上使用的是PHP的类自动加载,所 ...

  5. 解决执行sql脚本报错:没有足够的内存继续执行程序。

    出现执行sql脚本报错:没有足够的内存继续执行程序.是因为sql脚本过大,大家可能分为多个文件多次执行,这种笨方法可行,不过比较麻烦,大家可以用下面的方式,利用sqlcmd一次就行了:   执行cmd ...

  6. empty()和remove()的区别

    这两个都是删除元素,但是两者还是有区别的. remove()这个方法呢是删除被选元素的所有文本和子元素,当然包括被选元素自己. 而empty()呢,被选元素自己是不会被删除的. 比如: <div ...

  7. Easy UI下拉列表默认选中(多行)与为文本框赋值

    1.为单行文本框赋值 var data2 = $('#LoadArea').combobox("getData"); if (data2) { $('#id).combobox(' ...

  8. 基于Django的python验证码

    验证码 在用户注册.登录页面,为了防止暴力请求,可以加入验证码功能,如果验证码错误,则不需要继续处理,可以减轻一些服务器的压力 使用验证码也是一种有效的防止crsf的方法 验证码效果如下图: 验证码视 ...

  9. Python 解LeetCode:367. Valid Perfect Square

    题目描述:给出一个正整数,不使用内置函数,如sqrt(),判断这个数是不是一个数的平方. 思路:直接使用二分法,貌似没啥好说的.代码如下: class Solution(object): def is ...

  10. js判断对象为空 JSON.stringify(obj)

    JSON.stringify(obj) : 用于从一个对象解析出字符串 var c = {}; if(JSON.stringify(obj) == "{}"){ console.l ...