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.创建对象 ...
随机推荐
- 关于有偿提供拼图响应式后台的通知---------pintuer ui的官方通知(www.pintuer.com)
拼图响应式前端框架版响应式后台正式发布. 考虑到目前拼图的状况,我们不打算免费开放下载,但也不会收各位朋友1分钱,该版后台将有偿提供给各位给予拼图贡献的朋友. 废话不多说,一切皆以有图有真相,下面上图 ...
- [2015hdu多校联赛补题]hdu5384 Danganronpa
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5384 题意:函数f(A, B)定义:A.B为字符串,f(A, B)为A中有多少个不同的B(ex:f(& ...
- auth用户认证库
关于auth库,建议如下:1. ion_auth,基于Redux重写而成,非常不错的认证库,国外用的很多,几个最新的ci2.0.2基础上的开源系统(如doveforum)都用它,支持ci 2.0和以上 ...
- iOS 上架被拒原因保存
一.后台一直在获取用户的定位,需要给用户电池消耗提示 Your app uses the Location Background mode but does not include the requi ...
- CSS3转换
一.2D转换 1.css3 rotate()旋转 通过指定的角度参数对原元素指定一个2D rotation(2D 旋转) 语法: transform:rotate(<angle>); ...
- JS valueOf与字符串
js在处理字符串和数值加运算的时候会转换数值为字符串 然后执行字符串连接 在覆盖String.prototype.valueOf之前,new String(111)这样的字符串与数值加法也是字符串连接 ...
- 总结--解决 mysql 中文乱码
首先分析一下导致mysql 中文乱码的原因: 1.建表时使用了latin 编码 2.连接数据库的编码没有指定 3.写入时就已经乱码(这种情况需要自己检查源数据了) 解决方法总结: 1.创建库时指定编码 ...
- soapUI 时间格式
用soapUI测试webservice,接收DateTime格式,总是包 not a valid AllXsd value 老外说,必须用ISO8601格式,如: 2009-03-13T22:16:0 ...
- ST算法
作用:ST算法是用来求解给定区间RMQ的最值,本文以最小值为例 举例: 给出一数组A[0~5] = {5,4,6,10,1,12},则区间[2,5]之间的最值为1. 方法:ST算法分成两部分:离线预处 ...
- XE3随笔15:从XML中解析
SuperObject 文件包中还有一个 SuperXmlParser 单元, 可以从 XML 中解析出 ISuperObject. SuperXmlParser 只有三个函数: XMLParseSt ...