一、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. daterangepicker 使用方法以及各种小bug修复

    双日历时间段选择插件 — daterangepicker是bootstrap框架后期的一个时间控件,可以设定多个时间段选项,也可以自定义时间段,由用户自己选择起始时间和终止时间,时间段的最大跨度可以在 ...

  2. LINUX 笔记-文件属性相关命令

    chgrp:该命令用于改变文件所属用户组 chown:该命令用于改变文件的所有者 chmod:该命令用于改变文件的权限 -R:进行递归的持续更改,即连同子目录下的所有文件都会更改  

  3. VNC 远程连接vmware下centOS7

    VNC ( Virtual Network Computing)是一个linux下提供远程桌面支持的服务,类似于windows下的远程桌面服务,本来我是准备用xmanager来远程连我虚拟机中的cen ...

  4. 如何从零绘制k线图 -- 原生js canvas图表绘制

    样式如下图 源码地址: https://github.com/sutianbinde/charts 编写这个需要具备canvas基础,如果没有canvas基础可以学习我前面的cnavas基础博客. 具 ...

  5. request的getServletPath(),getContextPath(),getRequestURI(),getRealPath("/")区别

    假定你的web application 名称为news,你在浏览器中输入请求路径: http://localhost:8080/news/main/list.jsp 则执行下面向行代码后打印出如下结果 ...

  6. Host文件简介

    摘抄自:http://www.cnblogs.com/zgx/archive/2009/03/10/1408017.html.百度百科:hosts文件 很奇怪有很多人不知道Hosts是什么东西.在网络 ...

  7. Red and Black

    Problem Description There is a rectangular room, covered with square tiles. Each tile is colored eit ...

  8. 1.Introduction 介绍

    Welcome to Log4j 2! Introduction Almost every large application includes its own logging or tracing ...

  9. 使用Identity Server 4建立Authorization Server (5)

    预备知识: http://www.cnblogs.com/cgzl/p/7746496.html 第一部分: http://www.cnblogs.com/cgzl/p/7780559.html 第二 ...

  10. mysql 读写分离

    常见的读写分离方案:1)Amoeba读写分离2)MySQL-Proxy读写分离3)基于程序读写分离(效率很高,实施难度大,开发改代码) 2)原理 web 访问数据库,通过proxy4040端口作为转发 ...