Java入门笔记 03-面向对象(上)
介绍:Java是面向对象的程序设计语言,类是面向对象的重要内容,可以把类当成是一种自定义类型,可以使用类来定义变量,这种类型的变量统称为引用变量。也就是说,所有类都是引用类型。Java也支持面向对象的三大特征:封装、继承和多态,下面将逐一展开讲解以上内容。
一、 类和对象:
1. 类的定义:对一个类而言,有三个最常见的成员:构造器、成员变量和方法。类里各成员之间的定义顺序没有任何影响,各成员之间可以相互调用,但是需要指出的是:static修饰的成员不能访问非static修饰的成员,有static修饰的成员属于类本身,没有static修饰的成员属于该类的实例。如下是一个Person类的定义:
public class Person {
//成员变量(属性)
String name;
int age;
//构造器
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
//方法
public void eat() {
System.out.println("吃饭");
}
public void talk(String language) {
System.out.println("说话" + language);
}
}
2. 对象的产生和使用:创建对象的根本途径是构造器,通过new关键字来调用某个类的构造器即可创建这个类的实例。如:
Person p1;
p1 = new Person();
//或
Person p2 = new Person();
- static修饰的方法和成员变量,既可以通过类来调用,也可以通过实例来调用;
- 非static修饰的方法和成员变量,只能通过实例来调用。
3. 对象的this引用:this关键字总是指向调用该方法的对象,根据this出现位置的不同,this作为对象的默认引用有两种情形:
- 构造器中引用该构造器正在初始化的对象
- 在方法中引用调用该方法的对象
需要注意的是,在static修饰的方法中不能使用this引用,原因在于:如果在static修饰的方法中使用this关键字,则这个关键字就无法指向合适的对象。
另外,Java有一个让人极易“混淆”的语法,它允许使用对象来调用static修饰的成员变量、方法,但实际上这是不应该的。在使用Java编程时,不要使用对象去调用static修饰的成员,而是通过类来调用。
如果确实需要在static方法中调用非static成员,则只能重新创建一个对象,通过对象来调用。
必须使用this的情况:如果方法里有个局部变量和成员变量同名,但程序又需要在该方法中访问这个被覆盖的成员变量,则必须使用this前缀。
二、 成员变量和局部变量:
根据定义变量的位置不同,可以将变量分为两大类:成员变量和局部变量。
1. 成员变量:是指在类里面定义的变量,成员变量无须显式初始化,成员变量包括:
- 类变量(static修饰的成员变量)
- 实例变量(非static修饰的成员变量)
2. 局部变量:是指在方法里面定义的变量,除了形参之外,其余的都必须显式初始化,局部变量包括:
- 形参
- 方法局部变量
- 代码块局部变量
三、 方法详解:
1. 形参个数可变的方法:在JDK 1.5以后,Java允许定义形参个数可变的参数,在最后一个形参的类型后增加三点(...),多个参数将被当成数组传入,因此一个方法中最多只能有一个长度可变的形参。
2. 方法重载:如果同一个类中包含了两个及以上的方法同名,但是形参列表(包括形参顺序)不同,则称为方法重载。
四、 深入构造器:
1. 构造器重载:同一个类里具有多个构造器,多个构造器的形参列表不同,即被称为构造器重载,可以使用this来调用另一个重载的构造器来初始化部分属性。
【补充】
匿名对象:不定义对象的句柄,而直接调用这个对象的方法。这样的对象叫做匿名对象。如:
new Person().shout();
使用情况:
- 如果对一个对象只需要进行一次方法调用,那么就可以使用匿名对象。
- 我们经常将匿名对象作为实参传递给一个方法调用。
Java入门笔记 03-面向对象(上)的更多相关文章
- Java学习笔记(面向对象上)
面向对象(上) 面向对象的特点:封装性(是面向对象的核心思想,将对象的属性和行为封装起来).继承性(主要描述类与类之间的关系,通过继承,可以在无需重新编写原有类的情况下,对原有类的功能进行扩展)和多态 ...
- Java学习笔记:03面向对象-接口_多态
1.类的概念 一堆具有共同的成员变量(属性)和成员方法(功能)对象的集合 2.接口的概念 接口是功能的集合,就是方法的集合 接口中只能定义方法,不能定义普通的成员变量 而且接口中的成员方法,必须是抽象 ...
- [Java入门笔记] 面向对象编程基础(二):方法详解
什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能上来看,方法都有点类似与函数.但是,方法与传统的函数还是有着不同之处: 在 ...
- Java入门姿势【面向对象3】构造方法及其重载_方法的调用
上次我为大家写出啦"定义类与创建对象_了解局部变量",上篇文章代码可能较多,如没有了解透彻的话请打开下方文章在进行观看一下哦!! [Java入门姿势[面向对象2]定义类与创建对象_ ...
- Java学习笔记之---面向对象
Java学习笔记之---面向对象 (一)封装 (1)封装的优点 良好的封装能够减少耦合. 类内部的结构可以自由修改. 可以对成员变量进行更精确的控制. 隐藏信息,实现细节. (2)实现封装的步骤 1. ...
- Java入门笔记 00-前言&目录
前言:这本笔记记录的是Java基础部分的学习内容,大部分内容总结性的,包括: ---01 Java基础语法 ---02 数组 ---03 面向对象 ---04 异常处理 ---05 多线程 ---06 ...
- Java 学习笔记(4)——面向对象
现在一般的语言都支持面向对象,而java更是将其做到很过分的地步,java是强制使用面向对象的写法,简单的写一个Hello Word都必须使用面向对象,这也是当初我很反感它的一点,当然现在也是很不喜欢 ...
- [Java入门笔记] 面向对象三大特征之:继承
理解什么是继承 首先我们知道,面对对象有三大特征: 封装:解决了数据的安全性问题 继承:解决了代码的重用问题 多态:解决了程序的扩展问题 上一篇博客中,我们了解了一下封装,现在我了再来看看什么是继承. ...
- [Java入门笔记] 面向对象三大特征之:封装
了解封装 什么是封装? 在Java的面向对象程序设计中,有三大基本特征:封装.继承和多态.首先我们先来看看封装: 在Java的面对对象程序设计中,封装(Encapsulation)是指一种将函数功能实 ...
- [Java入门笔记] 面向对象编程基础(三):成员变量和局部变量
在类中,变量根据定义的位置不同,可以分为成员变量和局部变量.
随机推荐
- (搬运)使用PHPstudy在Windows服务器下部署PHP系统
原帖地址:http://www.php.cn/php-weizijiaocheng-406175.html 这篇文章主要介绍了关于使用PHPstudy在Windows服务器下部署PHP系统,有着一定的 ...
- Ubuntu中获取和使用uiautomatorviewer
图省事的办法是直接在网上找个android platform tools的某个版本下载下来 比如这个网站里面的:Android SDK工具——Platform-tools 个人比较倾向于先下载andr ...
- shell的debug模式
如何调试shell脚本? 在指定shell运行版本时加上 '-x' #!/bin/bash -x ➜ demo git:(master) ✗ cat debug.sh #!/bin/bash -x ...
- report_delay_calculation/check_timing/report_annotated_parasitics/report_analysis_coverge
如何debug 一颗cell 或一段net 的delay, 常用的办法是用report_delay_calculation 报这颗cell 或这段net, 会得到形式如下的report, 从该rep ...
- Hadoop架构: 关于Recovery (Lease Recovery , Block Recovery, PipeLine Recovery)
该系列总览: Hadoop3.1.1架构体系——设计原理阐述与Client源码图文详解 : 总览 在HDFS中,有三种Recovery 1.Lease Recovery 2.Block Recover ...
- (原创)Windows下编译的Shell脚本不能再Linux中运行的解决办法
一.原理 Windows编译的文件和Linux编译的文件格式不太一样,导致在Linux运行Shell脚本的时候会提示:/bin/bash^M: bad interpreter: 没有那个文件或目录. ...
- 6_2 铁轨(UVa514)<栈>
在一个叫「堆叠市」的城市中有一个有名的火车站.由于地形限制以及经费的关系,火车站及唯一的铁路的样子如下图: 现在火车从A方向来,预定从B方向离开.火车共有N节车厢(N <=1000),并且各车厢 ...
- C:数组基础
数组 在程序设计中,为了方便处理数据把具有相同类型的若干变量按有序形式组织起来--称为数组. 数组就是在内存中连续的相同类型的变量空间.同一个数组所有的成员都是相同的数据类型,同时所有的成员在内存中的 ...
- Apache的虚拟主机功能(基于IP地址、基于虚拟主机、基于端口)
1. 安装Apache服务程序(系统用户,1-199之间) 第一步:在虚拟机软件里选中光盘镜像: 第二步:将光盘设备挂载到/media/cdrom目录 输入:mkdir -p /media/cdrom ...
- mysql测试点
前言 性能测试过程中,数据库相关指标的监控是不可忽视的,在这里我们就MySQL的监控配置及重点涉及性能的一些参数进行说明. 在笔者的日常性能测试过程中,重点关注了这些参数,但不代表仅仅只有这些参数对性 ...