Java学习笔记 04 类和对象
一、类和对象的概念
- 类
>>具有相同属性和行为的一类实体
- 对象
>>实物存在的实体。通常会将对象划分为两个部分,即静态部分和动态部分。静态部分指的是不能动的部分,被称为属性,任何对象都会具备其自身的属性;动态部分指的是对象的行为
- 类实质上就是封装对象属性和行为的载体,而对象是类实例化出的一个实例
二、面向对象的三大特性
- 封装
>>将对象的属性和行为进行包装,隐藏其实现细节,称为封装
>>采用封装的思想保证了类内部数据结构的完整性,应用该类的用户不能轻易的直接操作此数据结构,只能执行类允许公开的数据。避免外部操作对内部数据的影响,提高了程序的可维护性
- 继承
>>一个对象直接使用另一个对象的属性和方法,并可以在另一个对象的基础上扩充自己的属性和方法,成为继承。继承者称为子类,被继承者称为父类
>>子类的实例都是父类的实例,但不能说父类的实例是子类的实例
>>继承关系可以使用树形关系来表示,父类与子类存在一种层次关系。一个类处于继承体系中,他既可以是其他类的父类,为其他类提供属性和行为,也可以是其他类的子类,继承父类的属性和方法
- 多态
>>将父类对象应用于子类的特征就是多态
三、类
- 成员变量
>>Java中对象的属性也称为成员变量
- 成员属性
>>Java中对象的行为成为成员方法
- 权限修饰符
>>Java中权限修饰符主要包括private、public和protected
>>private:该成员变量或方法只能在本类中被使用,在子类中是不可见的,并且对其他包的类也是不可见的
>>public:除了在本类使用这些数据之外,还可以在子类和其他包的类中使用
>>protected:只有本包内的该类的子类或其他类可以访问此类中的成员变量和成员方法,其他包的类和子类不能访问
- 局部变量
>>成员方法内的变量,被称为局部变量。局部变量在方法被执行时创建,在方法之行结束时被销毁。局部变量在使用时必须进行赋值操作或被初始化,否则会出现编译错误
>>局部变量的作用域从变量的声明开始到该变量的结束为止
>>在互不嵌套的作用域中可以同时声明两个名称和类型相同的局部变量
- this关键字
>>在Java语言中规定使用this关键字来代表本类对象的引用,this关键字被隐式的用于引用对象的成员变量和方法
>>this除了可以调用成员变量或成员方法外,还可以作为方法的返回值
>>普通方法中,this总是指向调用该方法的对象
>>构造方法中,this总是指向正要初始化的对象
>>this不能用于static方法
>>可以用this在一个构造方法中调用其他构造方法,且必须位于这个构造方法的第一行
- 类的构造方法
>>构造方法是一个与类名相同的方法,对象的创建就是通过构造方法完成的。每当实例化一个对象是,类都会自动调用构造方法
>>构造方法特点如下
>>>构造方法没有返回值
>>>构造方法的名称要与本类相同
public book(){ //public:构造方法修饰符 book:构造方法名称 ///没有void!!
...//构造方法体
}
- 静态变量、常量和方法
>>被声明为static的变量、常量和方法被称为静态成员
>>静态成员属于类所有,区别于个别对象,可以在本类或其他类使用类名和“.”运算符调用静态成员
>>静态数据与静态方法的作用通常是为了提供共享数据或方法,如数学计算公式等
>>静态成员同样需要遵循着public、private和protected修饰符的约束
>>静态变量中不能使用非静态的变量和方法
- 类的主方法
>>主方法是类的入口点,定义了程序从何处开始;主方法提供对程序流向的控制,Java编译器通过主方法来执行程序
>>主方法的特点如下
>>>主方法是静态的,所以如要直接在主方法中调用其他方法,则该方法必须也是静态的
>>>主方法没有返回值
>>>主方法的形参为数组。其中args[0]~args[n]分别代表程序的第一个参数到第n个参数,可以使用args.length获取参数的个数
>>主方法的语法如下
public static void main(String[] args){
//方法体
}
四、对象
- 对象的创建
>>在Java语言中通过new操作符来创建对象,可以在Java语言中使用new操作符调用构造方法创建对象
>>对象被创建出来时,就是一个对象的引用。这个引用在内存中为对象分配了存储空间,也可以在构造方法中初始化成员变量
>>每个对象都是相互独立的,在内存中占据独立的内存地址,并且每个对象都具有自己的生命周期,当生命周期结束时,对象就变成垃圾,被Java虚拟机自带的垃圾回收机制处理,不能再使用
- 访问对象的属性和行为
>>使用“对象.类成员”来获取对象的属性和行为
- 对象的引用和比较
>>对象的引用:类名 对象引用名称
>>引用于对象相关联的语法:类名 对象引用名称=创建对象操作符(new) 构造方法
>>对象的比较:“==”和equals()
- 对象的销毁
>>每个对象都有生命周期,当对象的生命周期结束时,分配给该对象的内存地址将会被回收
>>垃圾回收机制回收的两类对象
>>>对象引用超过其作用范围,这个对象将会被视为垃圾
>>>将对象赋值为null
>>垃圾回收机制只能回收由new操作符创建的对象
>>如果存在不是由new操作符创建的对象,可使用Java提供的finalize()方法,这个方法是Object类的方法,被声明为protected,用户可以在自己的类中定义这个方法。如果用户在类中定义了finalize()方法,在垃圾回收时会首先调用该方法,下一次垃圾回收动作发生时,才能真正回收被对象占用的内存
>>需要强调的是,垃圾回收或finalize()方法不保证一定会发生,如Java虚拟机内存损耗殆尽时,是不会执行垃圾回收的
>>由于垃圾回收不受人控制,具体的执行时间也不确定,所以finalize()方法也就无法执行。为此Java提供了System.gc()方法强制启动垃圾回收器来告知垃圾回收器进行清理
Java学习笔记 04 类和对象的更多相关文章
- Java学习笔记之---类和对象
Java学习笔记之---类和对象 (一)类 类是一个模板,它描述一类对象的行为和状态 例如:动物类是一个类,动物们都有属性:颜色,动物们都有行为:吃饭 public class Dog { Stri ...
- Java学习笔记之——类与对象
1.参数的传递方式 1)值传递 2)引用传递 2.类和对象: (1)类的定义: public class 类名{ 类型 属性1: 类型 属性2: ……… public 返回值类型 方法名1(形参){ ...
- 1.2(java学习笔记)类与对象
对象:是指具体的事物.比如学生 张三,老师 李四,代表一个单一的个体. 比如 学生 张三,这时张三就是具体的对象. 类:将对象中共有特征抽象出,可以理解为某种特性的集合. 世界上的事物可以分解成一 ...
- Java学习笔记——File类之文件管理和读写操作、下载图片
Java学习笔记——File类之文件管理和读写操作.下载图片 File类的总结: 1.文件和文件夹的创建 2.文件的读取 3.文件的写入 4.文件的复制(字符流.字节流.处理流) 5.以图片地址下载图 ...
- Java学习笔记(2)--- 对象和类入门,java包,this 和 super区别
1.对象和类(Object and class): 一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作. 面对对象编程是java非常重要的一部分,作者本身之前学过c ...
- Java学习笔记9(面象对象9:多态)
多态概述 多态是继封装.继承后,面对对象的第三大特性. 现实事物经常会出现多态,如学生,学生是人的一种,则一个具体的同学张三既是学生也是人,即出现两种形态. Java作为面向对象的语言,同样可以描述一 ...
- Java 学习笔记 ------第五章 对象封装
本章学习目标: 了解封装的概念与实现 定义类.构造函数与方法 使用方法重载与不定长度自变量 了解static方法 一.Java封装概念 在面向对象程式设计方法中,封装(英语:Encapsulation ...
- Java学习笔记六 常用API对象二
1.基本数据类型对象包装类:见下图 public class Test { public static void main(String[] args){ Demo(); toStringDemo() ...
- Java学习笔记:04面向对象-内部类_访问修饰符_final
04面向对象-内部类/访问修饰符/final 1.static的介绍 static:关键字,静态的 static的作用是用来修饰类中的成员 2.访问一个类中的某一个成员变量 方法一: _1.创建对象 ...
随机推荐
- jquery实现幻灯片
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Win7如何显示/隐藏Administrator账号
为了保证安全,windows7的administrator账户默认在登录时是不显示的. 在登录页面显示administrator账户的方法: 1. 选择"开始"菜单->&qu ...
- funny_python 00 The Zen of Python
# 打算每天多动的时候尽量搜索一些和coding相关的funny stuff Day 00 - PEP 20 The Zen of Python 在shell里面输入python -m this 回车 ...
- oracle表结构和表内容差异比对
oracle表结构和表内容差异比对 oracle中有三种集合操作,他们会把左边和右边的select 结果集进行集合操作. union 并集 intersect 交集 minus 差集 假设有如下两张表 ...
- setValuesForKeysWithDictionary 的用法
字典的快速赋值 setValuesForKeysWithDictionary 字数918 阅读6604 评论6 喜欢32 前言 在学习解析数据的时候,我们经常是这么写的:PersonModel.h文件 ...
- SQL Server创建复合索引时,复合索引列顺序对查询的性能影响
说说复合索引 写索引的博客太多了,一直不想动手写,有一下两个原因:一是觉得有炒剩饭的嫌疑,有兄弟曾说:索引吗,只要在查询条件上建索引就行了,真的可以这么暴力吗?二来觉得,索引是个非常大的话题,很难概括 ...
- SpringMVC集成缓存框架Ehcache
在互联网应用中,应用并发比传统企业及应用会高出很多.解决并发的根本在于系统的响应时间与单位时间的吞吐量.思路可分为:一减少系统的不必要开支(如缓存),二是提高系统单位时间内的运算效率(如集群). 在硬 ...
- 更快学习 JavaScript 的 6 个思维技巧
更快学习 JavaScript 的 6 个思维技巧 我们在学习JavaScript,或其他任何编码技能的时候,往往是因为这些拦路虎而裹足不前: 有些概念可能会造成混淆,尤其当你是从其他语言转过来的时候 ...
- mina IoBuffer
mina IoBuffer 常用方法 Limit(int) 如果position>limit, position = limit,如果mark>limit, 重置mark Mark() ...
- windows10, 安装wamp无法启动服务的问题
今天在另一台电脑上安装了wamp, 就是这个玩意 结果怎么也启动不起来, 上网上查了一下, 原因是有些windows10的系统上有安装IIS10, 这个也不知道是啥东西, 占用了80端口, 所以启动不 ...