一.面向对象基本概念

面向对象的特征

  • 封装

封装是指利用抽象数据类型将数据(属性)和对数据的操作(方法)包装起来,把对象的属性和动作结合成一个独立的单位,并尽可能隐蔽对象的内部处理细节。

  • 继承

一个类拥有另一个类的所有属性和行为时,就称为继承。被继承类为父类,继承类为子类。

  • 多态

通过子类对父类方法的重写实现多态

同一类中同名方法实现多态(重载方法需定义不同参数列表)

二.类的定义

Java类逻辑结构

在Java语言中,有一个顶层的类Object,它是Java中所有类的父类,在Java中称为基类

访问修饰控制符

类型 private 无或者(friendly) protected public
同一类
同一包中子类
同一包中非子类
不同包中子类
不同包中非子类

每个源文件只能有一个public类,且类名也是源文件名。

一个源文件可以不含有公有类,此时文件名可以任取。

类的定义

[public][abstract | final] class Name[extends SuperName][implements InterfaceNameList]{
//成员变量的声明
//成员方法的定义
} abstract//抽象类说明符。抽象类不能直接生成对象
final//终级类说明符。终级类不能被继承

成员变量

[public | private | protected][static][final][transient][volatile] DataType variableName[  = initializationValue]

final//声明一个终极变量(即常量)
static//声明一个静态变量(类变量)
transient//声明一个暂时性变量,提示Java虚拟机忽略保存
volatile//异步保护,维护变量在并发进程的前后一致性

三.方法

方法的定义

[public | private | protected][abstract]|[final][static][native][synchronized] returnDataType | void methodName(parametersList) throws exceptionList{
//方法内变量
//方法内主体代码
}
native//本地化
synchronized//同步
throws exceptionList//定义方法抛出的异常对象的列表

四.对象

对象的定义

className ObjectName = new className(parameter);

匿名对象

new className(parameter)

对象的引用

引用是一个地址,指明了对象的的变量和方法的储存位置。当把一个对象赋值给一个对象变量或者作为方法的参数时,使用的并不是对象本身,也不是它的拷贝,而是它的地址。

Student stu1 = new Student();
Student stu2 = stu1;
//stu2和stu1引用同样的对象,stu2不是stu1的拷贝,stu2并没有分配内存空间

五.实例成员和类成员

实例成员

实例成员是指在访问成员变量和成员方法时,需要通过new创建一个实例对象,然后通过" . "操作符去引用类的成员

实例成员不用static修饰

类成员

  • 类变量

用static修饰的变量

  • 类方法

我们知道,不管是类方法与实例方法,都是以代码块的方式存在,当类的字节码文件加载到内存时,它们在内存中均只有一个备份。但类方法与实例方法不相同的是:

(1)对类的实例方法, 当类加载到内存时,不分配人口地址。当该类创建对象后,类中的实例方法才会被分配人口地址,从而实例方法可以被类创建的任何对象调用执行,这个人口地址也是被所有对象共享的。

(2)对类的类方法,在该类被加载到内存时,就分配了相应的人口地址,当然这个地址在整个类中也是共享的,从而类方法不仅可以被类创建的任何对象调用执行,也可以直接通过类名调用。

那么Java应用程序类中的main( )方法为什么必须声明为static呢?这是因为只有类方法,当类加载到内存后就可以获得该方法的人口地址,从而可以由Java虚拟机调用执行,成为整个应用程序的执行人口。如果把main( )方法声明为实例方法,这个main( )方法就无法在类加载到内存时被Java虚拟机直接调用。

初始化器

初始化器是一段不在方法之内的程序代码,这段代码用{ }包围起来。

实例初始化器:无修饰符static,在对象生成时初始化变量(一般不会使用,没有实际意义)

静态初始化器:有修饰符static,在被类加载入内存时只执行一次.

public class Demo {
// constructor 构造函数
public Demo() {
System.out.println("constructor");
}
// static initializer 静态初始化器
static {
System.out.println("static");
}
public static void main(String[] args) {
new Demo();
}
}
//输出
static
constructor

实例代码的初始化在构造方法中完成,类变量的初始化应在静态初始化器中完成,使代码更容易维护和阅读。

六.命令行参数

命令行参数使用格式

//格式一
Java className parameter1 parameter2 parameter3
//格式二(当参数中包含空格时)
Java className "parameter1" "parameter2" "parameter3"
//混合使用(包含空格参数用双引号括起来,没空格不必括起来)
Java className "this is" "a command" "line parameter"

命令行参数的接收

public static void main(String [] args)

05.Java面向对象的更多相关文章

  1. 080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则

    080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则 本文知识点:单一职责原则 说明:因为时间紧张,本人写博客过程中只是 ...

  2. 101 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 05 通过方法实现学生类与专业类关联——方案二

    101 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 05 通过方法实现学生类与专业类关联--方案二 本文知识点:通过方法实现学生类与 ...

  3. Java面向对象:接口

    Java面向对象之接口 什么是接口:接口是一种规范和标准,他们可以约束类的行为,是一些方法特征的集合 语法: [修饰符] interface 接口名 extends 父接口1,夫接口2....... ...

  4. 实验二Java面向对象程序设计_20135129李畅宇

    ava第二次实验报告   课程:Java实验   班级:201352     姓名:池彬宁  学号:20135212 成绩:             指导教师:娄佳鹏   实验日期:15.05.05 ...

  5. Java面向对象程序设计

    北京电子科技学院(BESTI)                                                                                 实    ...

  6. 20155306 实验二 Java面向对象程序设计

    20155306 实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验要 ...

  7. Java第二次实验报告——Java面向对象程序设计

    北京电子科技学院(BESTI) 实    验    报    告 课程名称:java程序设计实验      班级:1352         姓名:洪韶武      学号:20135219 成绩:   ...

  8. JAVA面向对象

    JAVA面向对象 对象   我们生活中能看到能摸到的一切事物都是对象.在程序中模拟出生活中的所有东西万物皆对象   只要是对象--属性和行为(方法)   属性   对象有什么   例如:学生有姓名.学 ...

  9. 理解JAVA - 面向对象(object) - 属性,方法

    理解JAVA - 面向对象(object) - 属性,方法 多态的体现:    向上造型,父类接收子类对象:向上造型:    从父类角度看不到子类独有的方法:面向对象,人类认知世界的方式:生活中每天都 ...

随机推荐

  1. hadoop(hbase)副本数修改

    一.需求场景 随着业务数据的快速增长,物理磁盘剩余空间告警,需要将数据备份从3份修改为1份,从而快速腾出可用磁盘容量. 二.解决方案 1. 修改hdfs的副本数 Hbase 的数据是存储在 hdfs ...

  2. Gym101142G Gangsters in Central City

    题目链接:https://cn.vjudge.net/problem/Gym-101142G 知识点: DFS序.LCA 题目大意: 给定一棵有根树(根为 \(1\)).每次修改叶子节点会被染成黑色( ...

  3. 实验二、OpenCV图像滤波

    一.题目描述 对下面的图片进行滤波和边缘提取操作,请详细地记录每一步操作的步骤. 滤波操作可以用来过滤噪声,常见噪声有椒盐噪声和高斯噪声,椒盐噪声可以理解为斑点,随机出现在图像中的黑点或白点:高斯噪声 ...

  4. vue端口号被占用

    今天在启动一个Vue项目的时候,遇到了一个问题. 得知是Vue项目端口号占用的问题.   解决方法: 换一个端口号. 在调用  npm run dev 的时候,实际上是在调用根目录下的 package ...

  5. 第三篇-用Flutter手撸一个抖音国内版,看看有多炫

    前言 前一篇已经开发了大部分框架,包含视频上下滑动播放,这次将上次未完成的数据显示友好显示,以及底部音乐走马灯特效,另外优化了加载数据的bug,在dart语言里 & 会自动变成&  另 ...

  6. SpringMVC(四)SpringMVC实现文件上传、异常拦截去、整合SSM

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.文件上传 文件上传在SpringMVC中如何实现: 准备一个文件上传的表单 导入文件上传需要的jar ...

  7. Java实现蓝桥杯 算法训练 ALGO-15 旅行家的预算

    问题描述 一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的).给定两个城市之间的距离D1.汽车油箱的容量C(以升为单位).每升汽油能行驶的距离D2.出发点每升汽油价格P和沿 ...

  8. Java实现 LeetCode 551 学生出勤记录 I(暴力大法好)

    551. 学生出勤记录 I 给定一个字符串来代表一个学生的出勤记录,这个记录仅包含以下三个字符: 'A' : Absent,缺勤 'L' : Late,迟到 'P' : Present,到场 如果一个 ...

  9. Java实现 LeetCode 354 俄罗斯套娃信封问题

    354. 俄罗斯套娃信封问题 给定一些标记了宽度和高度的信封,宽度和高度以整数对形式 (w, h) 出现.当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一 ...

  10. Java实现 LeetCode 91 解码方法

    91. 解码方法 一条包含字母 A-Z 的消息通过以下方式进行了编码: 'A' -> 1 'B' -> 2 - 'Z' -> 26 给定一个只包含数字的非空字符串,请计算解码方法的总 ...