一、面向对象的概念

1.什么是面向对象?

  (1)面向对象是一种符合人类思维习惯的编程思想。

  (2)面向对象是一种思考问题的思维方式。

2.三种特性:

  (1)封装性

  (2)继承性

  (3)多态性

3.建立面向对象思维方式:

  (1)先整体,再局部

  (2)先抽象,再具体

  (3)能做什么,再怎么做

4.如何学习面向对象?

  (1)掌握一门面向对象的语法

  (2)熟悉面向对象的设计原则

  (3)熟悉面向对象设计模式

二、类与对象

1.类的定义:

  (1)类是分类、类别

  (2)通过分类,我们可以区别不同的事物种类,在日常生活中,我们常常这样做

  (3)所以,类是一组具有相同特性(属性)与行为(方法)的食物集合。

2.对象的定义

  一个类要想真正的进行操作,且必须依靠对象,对象的定义格式如下:

类名称 对象名称 = new类名称();

2.类与对象的的关系

  (1)类表示一个共性的产物,是一个综合的特征,而对象,是一个个性的产物,是一个个体的特征。

  (2)类由属性和方法构成:

    属性:相当于一个个的特征

    方法:相当于人的一个个的行为,例如:说话、吃饭、唱歌、睡觉

3.类和对象的定义格式

在Java中可以使用以下的语句定义一个类:

class类名称{
属性名称;
返回值类型 方法名称(){}
}

对象的定义格式:

类名称 对象名称 = new类名称();

如果想要访问类中的属性或方法(方法的定义),

则可以依靠以下的语法形式:

访问类中的属性:

对象.属性;

调用类中的方法:

对象.方法();

4.类与对象小结

(1)new关键字:表示向内存申请空间,也表示实例化一个对象,创建一个对象。

(2)一个对象在内存中的大小,由该对象的所有属性所占的内存大小的总和。引用类型变量在32位系统上占4个字节,在64位系统上占8个字节。加上而外的对象隐形数据所占的大小。

(3)相同的类型才可以赋值。

(4)不同的引用,指向同一个对象,任何一个引用改变对象的值,其他引用都会反映出来。

(5)编程时要注意的问题,在确定不使用对象时,要尽早释放对象:引用null

(6)当一个堆中的对象没有被任何引用变量所指向时,该对象会被JVM的GC程序认为是垃圾对象,从而被回收。

三、封装性

1.封装性的概念

  (1)封装性是面向对象思想的三大特征之一。

  (2)封装就是隐藏实现细节,仅对外提供访问接口。

    封装有:属性的封装、方法的封装、类的封装、组件的封装、模块化的封装、系统级封装...

2.封装的好处

(1)模块化

(2)信息隐藏

(3)代码重用

(4)插件化易于调试

(5)具有安全性

3.封装缺点

  会影响执行效率、

4.封装性的体现,需要权限修饰符来配合

(1)Java规定的4种权限(从小到大排列):private、缺省、protected、public

(2)4种权限可以用来修饰类及类的内部结构:属性、方法、构造器、内部类

(3)具体的,4种权限都用来修饰类的内部结构:属性、方法、构造器、内部类

      修饰类的话,只能使用:缺省、public

四、成员变量和局部变量

1.在类中的位置不同

  成员变量:在类中定义

  局部变量:在方法中定义或者方法的参数

2.在内存中的位置不同

  成员变量:在堆内存(成员变量属于对象,对象进堆内存)

  局部变量:在栈内存(局部变量属于方法,方法进栈内存)

3.生命周期不同

  成员变量:随着对象的创建而存在,随着对象的销毁而消失

  局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

4.初始化值不同

  成员变量:有默认初始化值,引用类型默认null

  局部变量:没有默认初始化值,必须定义,赋值,然后才能使用

注意:

  局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。

五、构造方法

1.什么是构造方法:

  (1)构造方法是类构造对象时调用的方法,用于对象的初始化工作

  (2)构造方法是实例化一个类的对象时,也就是new的时候,最先调用的方法。

2.构造方法的定义:

  构造方法是在类中定义的,构造方法的定义格式:方法名称与类名称相同,无返回值类型的声明。

3.对象的实例化语法:

Dog dog = new Dog();//new Dog后面有个括号,带括号表示调用了方法,此时调用的方法就是构造方法了

4.构造方法重载

无参构造方法:

public Dog(){}
//带一个参数的构造方法:
public Dog(String name){
this.name =name;
}

带多个参数的构造方法:

public Dog(String name,int age){
this.name =name;
this.age = age;
}

5.构造方法小结

(1)构造方法名称与类名相同,没有返回值声明(包括void)

(2)构造方法用于初始化数据(属性)

(3)每一个类中都会有一个默认的无参的构造方法

(4)如果类中有有显示的构造方法,那么默认构造方法将无效

(5)构造方法可以有多个,但参数不一样,成为构造方法的重载

(6)在构造方法中调用另一个构造方法,使用this.(),该句代码必须在第一句

(7)构造方法之间的调用,必须要有出口

(8)给对象初始化数据可以使用构造方法或setter方法,通常情况下,两者都会保留

(9)一个好的编程习惯是要保留默认的构造方法。(为了方便一些框架代码使用反射来创建对象)

(10)private Dog(){},构造方法私有化,当我们的需求是为了保证该类只有一个对象时。

  什么时候一个类只需要一个对象?比如,工具类(没有属性的类,只有行为)并且该工具对象被频繁使用。权衡只用一个 对象产生多个对象的内存使用,来确定该类是否要定义为只需要一个对象。

Java基础--面向对象(上)的更多相关文章

  1. java基础面向对象之类与对象

    java基础面向对象之类与对象 2017-01-14 1.面向对象的基本概念 以一种组建化的形式进行代码设计 1)在面向对象程序设计中包含有如下几种特性 •封装性:保护内部结构的安全性 •继承性:在已 ...

  2. Java基础-面向对象第一特性之封装(Encapsulation)

    Java基础-面向对象第一特性之封装(Encapsulation) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.理解什么是面向过程和面向对象 面向过程与面向对象都是我们编程中 ...

  3. Java基础 (上)

    基础概念与常识 Java 语言有哪些特点? 简单易学: 面向对象(封装,继承,多态): 平台无关性( Java 虚拟机实现平台无关性): 支持多线程( C++ 语言没有内置的多线程机制,因此必须调用操 ...

  4. 第二十七节:Java基础面向对象-静态,单例模式,继承详情知识点

    前言 Java基础面向对象-静态,单例模式,继承详情知识点.静态-static关键字,static变量,静态代码块,代码块(不加静态),对象创建过程,单例模式,继承. 静态-static关键字 // ...

  5. Java基础-面向对象第三大特性之多态(polymorphism )

    Java基础-面向对象第三大特性之多态(polymorphism) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.多态概述 多态是继封装,继承之后,面向对象的第三大特性,多态的 ...

  6. Java基础-面向对象第二特征之继承(Inheritance)

    Java基础-面向对象第二特征之继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承的概述 在现实生活中,继承一般指的是子女继承父辈的财产.在程序 ...

  7. 黑马程序员----java基础笔记上(毕向东)

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 笔记一共记录了毕向东的java基础的25天课程,分上.中.下 本片为上篇,涵盖前10天课程 1. ...

  8. JAVA(一)JAVA基础/面向对象基础/高级面向对象

    成鹏致远 | lcw.cnblog.com |2014-01-23 JAVA基础 1.开发环境搭建 JAVA程序的执行流程 JAVA命令->要使用一个*.class文件(类文件)->通过c ...

  9. Java基础——面向对象

    Hello 大家好,我又来啦,今天我们来说说Java的面向对象. 还记得之前去面试几家公司的实习生职位,大部分面试官都问过我有关面向对象 的问题,不知道以后还会不会问,估计是不会了吧...(:3[▓▓ ...

  10. Java编程基础-面向对象(上)

    一.面向对象的概念 1.概念:面向对象是把解决的问题按照一定规则划分为多个独立的对象,然后通过调用对象的方法来解决问题.当然,一个应用程序会包含多个对象,通过多个对象的相互配合来实现应用程序的功能.这 ...

随机推荐

  1. 系统学习Javaweb8----JavaScript4(结束)

    学习内容: 1.DOM对象 1.2DOM对象--元素对象常见属性 2.JS事件 2.1JS事件--入门案例 2.2JS事件--驱动机制 2.3常见JS事件--点击事件 2.4常见JS事件--点击事件 ...

  2. 003.前端开发知识,前端基础CSS(2020-01-07)

    一.CSS初识 CSS通常称为CSS样式表或层叠样式表(级联样式表),主要用于设置HTML页面中的文本内容(字体.大小.对齐方式等).图片的外形(宽高.边框样式.边距等)以及版面的布局等外观显示样式. ...

  3. kubectl格式化输出和调试

    1.格式化输出 以特定的格式想终端输出详细信息,可以在 kubectl 命令中添加 -o  或者 -output 选项 输出格式 描述 -o=custom-columns=<spec> 使 ...

  4. SGD/BGD/MBGD使用python简单实现

    算法具体可以参照其他的博客: 随机梯度下降: # coding=utf-8 ''' 随机梯度下降 ''' import numpy as np # 构造训练数据 x = np.arange(0., 1 ...

  5. iOS炫酷动画图案、多种选择器、网络测速、滑动卡片效果等源码

    iOS精选源码 对网络进行测速 自实现大标题,配合原生骨架屏demo 简单方便的pickerVIew记录数据 LZPickerView 科技风绘制组件,简单快速"画"出炫酷图案 R ...

  6. python后端面试第八部分:制作简历和如何面试--长期维护

    ###############     就业指导    ################ 这里面有套路,你懂了这个套路,你会找到更好的工作,你会更快的找到工作, ,如何制作简历,五颗星 ,如何投递简历 ...

  7. MAC地址和IP地址是否缺一不可

    答案是肯定的,我们来具体分析: 在网络传输的过程中,第一次将信息从A端发往B端时,首先在A端需要将信息从应用层开始到物理层进行逐层封装,到达B端后再从物理层到应用层进行逐层分用解包,最后拿到信息. 信 ...

  8. highcharys去掉x轴,y轴轴线和刻度

    x轴 xAxis: { lineWidth :,//去掉x轴线 tickWidth:,//去掉刻度 labels: { enabled: false },//去掉刻度数字 }, y轴 yAxis: { ...

  9. OpenCV 离散傅立叶变换

    #include "opencv2/core/core.hpp" #include "opencv2/imgproc/imgproc.hpp" #include ...

  10. 体验vSphere 6之1-安装VMware ESXi 6 RC版(转载)

    体验vSphere 6之1-安装VMware ESXi 6 RC版 在2015年,各个公司都会发布一系列新的产品,例如Microsoft会发布Windows 10,VMware会发布vSphere 6 ...