3.1、概述

概述:面向对象是相对面向过程而言,面向对象和面向过程都是一种思想,面向过程强调的是功能行为,面向对象则是将功能封装进对象,强调具备功能的对象,面向对象是基于面向过程的。面向对象的三大特征:封装、继承、多态。

开发:其实就是找对象,建立对象,使用对象,维护对象的关系。

3.2、类和对象

简单理解:类是对事物的一种描述,对象则为具体存在的事物

类的定义:

public class 类名 {
// 成员变量
变量1的数据类型 变量1;
变量2的数据类型 变量2;

// 成员方法
方法1;
方法2;
}

对象使用:

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

成员调用:

对象名.成员变量
对象名.成员方法();

特别注意:

3.3、封装

概述:是面向对象编程语言对客观世界的模拟,客观世界 里成员变量都是隐藏在对象内部的,外界是无法直接操作的

原则:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问

好处:通过方法来控制成员变量的操作,提高了代码的安全性,把代码用方法进行封装,提高了代码的复用性

3.3.1、private关键字

概述:private是一个修饰符,可以用来修饰成员(成员变量,成员方法),被private修饰的成员,只能在本类进行访问

应用:类中的属性通常被私有化,并对外提供公共的访问方法,这样可以避免安全隐患。这个方法一般有两个,规范写法:对于属性 xxx,可以使用setXxx()、getXxx()对其进行操作。

3.3.2、this关键字

概述:this代表它所在函数所属对象的引用,哪个对象在调用this所在的函数,this就代表哪个对象

应用:当定义类中功能时,该函数内部要用到调用该函数的对象时,这时用this来表示这个对象

3.3.3、构造方法

概述:构造方法是一种特殊的方法,可以使用带参构造,为成员变量进行初始化

格式:

public class 类名{
// [参数]可有可无
修饰符 类名([参数]) { }
}

注意:

  1. 如果没有定义构造方法,系统将给出一个默认的无参数构造方法,如果定义了构造方法,系统将不再提供默认的构造方法
  2. 如果自定义了带参构造方法,还要使用无参数构造方法,就必须再写一个无参数构造方法

3.3.4、封装案例

class Student {
// 成员变量
private String name;
private int age; // 无参构造方法
public Student() {} // 有参构造方法
public Student(String name, int age) {
this.name = name;
this.age = age;
} // 成员方法
public void setName(String name) {
this.name = name;
} public String getName() {
return name;
} public void setAge(int age) {
this.age = age;
} public int getAge() {
return age;
}
}

3.4、继承

概述:继承可以使得子类具有父类的属性和方法,还可以在子类中重新定义,以及追加属性和方法

格式:class 子类 extends 父类 { }

好处:继承可以让类与类之间产生关系,子父类关系,产生子父类后,子类则可以使用父类中非私有的成员

3.4.1、super关键字

概述:代表父类存储空间的标识(可以理解为父类对象引用)

应用:子类要访问父类中的同名成员(成员变量和成员方法),用super关键字

3.4.2、this和super区别

this和super的概述:
this:代表本类对象的引用
super:代表父类对象的引用 this和super的使用:
成员变量:
this.成员变量 - 访问本类成员变量
super.成员变量 - 访问父类成员变量 成员方法:
this.成员方法 - 访问本类成员方法
super.成员方法 - 访问父类成员方法 构造方法:
this(…) - 访问本类构造方法
super(…) - 访问父类构造方法

3.4.3、继承中的成员访问特点

3.4.3.1、继承中变量使用的访问特点

  1. 子类局部范围找
  2. 子类成员范围找
  3. 父类成员范围找
  4. 如果都没有就报错(不考虑父亲的父亲…)

3.4.3.2、继承中成员方法的访问特点

  1. 子类成员范围找
  2. 父类成员范围找
  3. 如果都没有就报错(不考虑父亲的父亲…)

3.4.3.3、继承中构造方法的访问特点

注意:子类中所有的构造方法默认都会访问父类中无参的构造方法,每一个子类构造方法的第一条语句默认都是:super()

问题:如果父类中没有无参构造方法,只有带参构造方法,该怎么办呢?

答案:通过使用super关键字去显示的调用父类的带参构造方法

3.4.4、方法重写

概述:子类出现了和父类中一模一样的方法声明(方法名一样,参数列表也必须一样)

应用:当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法,这样,即沿袭了 父类的功能,又定义了子类特有的内容

注解:Override注解用来检测当前的方法,是否是重写的方法,起到【校验】的作用

注意:

  1. 私有方法不能被重写(父类私有成员子类是不能继承的)
  2. 子类方法访问权限不能更低(public > 默认 > 私有)

3.4.5、继承的注意事项

  1. 类只支持单继承,不支持多继承
  2. 类支持多层继承

3.5、多态

概述:同一个对象,在不同时刻表现出来的不同形态

前提:要有继承或实现关系、要有方法的重写、要有父类引用指向子类对象

好处:提高程序的扩展性,定义方法时候,使用父类型作为参数,在使用的时候,使用具体的子类型参与操作

3.5.1、多态中的成员访问特点

成员变量:编译看父类,运行看父类
成员方法:编译看父类,运行看子类

3.5.2、多态中的转型

向上转型:父类引用指向子类对象就是向上转型
向下转型:子类型 对象名 = (子类型)父类引用;

3.5.3、instanceof 运算符

格式:对象 intanceof 类型(类类型 接口类型)

描述:如果运算符左侧变量所指的对象,是操作符右侧类或接口的一个对象,那么结果为真

3.6、包和导包

3.6.1、package关键字

概述:包就是文件夹,用来管理类文件的

格式:package 包名; (多级包用.分开)

注意:

带包编译:javac –d . 类名.java
例如:javac -d . com.caochenlei.demo.HelloWorld.java 带包运行:java 包名+类名
例如:java com.caochenlei.demo.HelloWorld

3.6.2、 import关键字

概述:使用不同包下的类时,使用的时候要写类的全路径,写起来太麻烦了,为了简化带包的操作,Java就提供了导包的功能

普通格式:import 包名;

静态导入:import static 包名.类名.方法名;

3.7、权限修饰符

3.8、final关键字

概述:final关键字是最终的意思,可以修饰成员方法、成员变量、类

特点:

final修饰方法:表示该方法不能被重写
final修饰变量:表示该变量是一个常量,不能再次赋值
fianl修饰类:表示该类不能被继承

注意:final修饰局部变量

  1. fianl修饰基本数据类型变量:基本类型的数据值不能发生改变
  2. final修饰引用数据类型变量:引用类型的地址值不能发生改变,但是地址里面的内容是可以发生改变

3.9、static关键字

概述:static关键字是静态的意思,可以修饰成员方法、成员变量

特点:

非静态的成员方法
能访问静态的成员变量
能访问非静态的成员变量
能访问静态的成员方法
能访问非静态的成员方法 静态的成员方法
能访问静态的成员变量
能访问静态的成员方法

注意:静态成员方法只能访问静态成员

第三章 Java面向对象(上)的更多相关文章

  1. 第三章 Java面向对象(下)

    3.1.抽象类 概述:在做子类共性功能抽取时,有些方法在父类中并没有具体的体现,这个时候就需要抽象类了 格式:public abstract class 类名 {} 语法特点: 抽象类和抽象方法必须使 ...

  2. 实验三《Java面向对象程序设计》实验报告

    20162308 实验三<Java面向对象程序设计>实验报告 实验内容 XP基础 XP核心实践 IDEA工具学习 密码学算法基础 实验步骤 (一)Refactor/Reformat使用 p ...

  3. 2017-2018-2 20165236 实验三《Java面向对象程序设计》实验报告

    2017-2018-2 20165236 实验三<Java面向对象程序设计>实验报告 一.实验报告封面 课程:Java程序设计            班级:1652 姓名:郭金涛     ...

  4. 2017-2018-2 20165318 实验三《Java面向对象程序设计》实验报告

    2017-2018-2 20165318 实验三<Java面向对象程序设计>实验报告 一.实验报告封面 课程:Java程序设计        班级:1653班        姓名:孙晓暄  ...

  5. 20155201 实验三《Java面向对象程序设计》实验报告

    20155201 实验三<Java面向对象程序设计>实验报告 一.实验内容 XP基础 XP核心实践 相关工具 二.实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门 ...

  6. 20155218 《Java程序设计》实验三(Java面向对象程序设计)实验报告

    20155218 <Java程序设计>实验三(Java面向对象程序设计)实验报告 一.实验内容及步骤 (一)编码标准 在IDEA中使用工具(Code->Reformate Code) ...

  7. 20165301陈潭飞2017-2018-2 20165301 实验三《Java面向对象程序设计》实验报告

    2017-2018-2 20165301 实验三<Java面向对象程序设计>实验报告 一.敏捷开发与XP实践-1 实验要求: 在IDEA中使用工具(Code->Reformate C ...

  8. (第三章)Java内存模型(下)

    一.happens-before happens-before是JMM最核心的概念.对于Java程序员来说,理解happens-before是理解JMM的关键. 1.1 JMM的设计 从JMM设计者的 ...

  9. 第三记 Java面向对象

    相信很多人都有听到,见到这么一句话:Java是一门面向对象编程的语言,但是又是否对这句话有了自己的理解呢? 一.面向对象 面向对象是一种新兴的程序设计方法,也可以说是一种新的程序设计规范(paradi ...

随机推荐

  1. SqueezeNet/SqueezeNext简述 | 轻量级网络

    SqueezeNet系列是比较早期且经典的轻量级网络,SqueezeNet使用Fire模块进行参数压缩,而SqueezeNext则在此基础上加入分离卷积进行改进.虽然SqueezeNet系列不如Mob ...

  2. 每日一题 - 剑指 Offer 32 - II. 从上到下打印二叉树 II

    题目信息 时间: 2019-06-25 题目链接:Leetcode tag: 队列 BFS 难易程度:简单 题目描述: 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行. 示 ...

  3. CF796C Bank Hacking 题解

    洛谷链接 题目 Although Inzane successfully found his beloved bone, Zane, his owner, has yet to return. To ...

  4. Monkey and Banana 题解(动态规划)

    Monkey and Banana 简单的动态规划 1.注: 本人第一篇博客,有啥不足还请多多包涵,有好的建议请指出.你以为有人读你博客,还给你提意见. 2.原题 Background: A grou ...

  5. day58 前端收尾

    目录 一.jQuery结束 1 阻止后续事件执行 2 阻止事件冒泡 3 事件委托 4 页面加载 5 动画效果 6 补充知识点 二.前端框架Bootstrap 1 布局容器 2 栅格系统 3 栅格参数 ...

  6. Python axis的含义

    axis=0表述列 axis=1表述行 如下面例子: In [52]: arr=np.arange(12).reshape((3,4))In [53]:arrOut[53]:array([[ 0, 1 ...

  7. MYSQL 之 JDBC(十六): DBUtils

    DBUtils是Apache组织提供的一个开源的JDBC工具类库,能极大简化jdbc编码的工作量 API介绍 QueryRunner ResultSetHandler 工具类DbUtils 用DBUt ...

  8. python面试题:redis数据库

    来源链接: https://www.cnblogs.com/jasontec/p/9699242.html https://www.cnblogs.com/Java3y/p/10266306.html ...

  9. 数据可视化基础专题(三):Pandas基础(二) csv导入与导出

    1.csv导入 1.1 csv导入 .read_csv()函数 pandas.read_csv(filepath_or_buffer: Union[str, pathlib.Path, IO[~Any ...

  10. 数据可视化之powerBI技巧(十)利用度量值,轻松进行动态指标分析

    在一个图表中,可以将多项指标数据放进去同时显示,如果不想同时显示在一起,可以根据需要动态显示数据吗?在 PowerBI 中当然是可以的. 下面就看看如何利用度量值进行动态分析. 假如要分析的指标有销售 ...