一、类和对象的概念

>>具有相同属性和行为的一类实体

  • 对象

>>实物存在的实体。通常会将对象划分为两个部分,即静态部分和动态部分。静态部分指的是不能动的部分,被称为属性,任何对象都会具备其自身的属性;动态部分指的是对象的行为

  • 类实质上就是封装对象属性和行为的载体,而对象是类实例化出的一个实例

二、面向对象的三大特性

  • 封装

>>将对象的属性和行为进行包装,隐藏其实现细节,称为封装

>>采用封装的思想保证了类内部数据结构的完整性,应用该类的用户不能轻易的直接操作此数据结构,只能执行类允许公开的数据。避免外部操作对内部数据的影响,提高了程序的可维护性

  • 继承

>>一个对象直接使用另一个对象的属性和方法,并可以在另一个对象的基础上扩充自己的属性和方法,成为继承。继承者称为子类,被继承者称为父类

>>子类的实例都是父类的实例,但不能说父类的实例是子类的实例

>>继承关系可以使用树形关系来表示,父类与子类存在一种层次关系。一个类处于继承体系中,他既可以是其他类的父类,为其他类提供属性和行为,也可以是其他类的子类,继承父类的属性和方法

  • 多态

>>将父类对象应用于子类的特征就是多态

三、类

  • 成员变量

>>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 类和对象的更多相关文章

  1. Java学习笔记之---类和对象

    Java学习笔记之---类和对象 (一)类 类是一个模板,它描述一类对象的行为和状态  例如:动物类是一个类,动物们都有属性:颜色,动物们都有行为:吃饭 public class Dog { Stri ...

  2. Java学习笔记之——类与对象

    1.参数的传递方式 1)值传递 2)引用传递 2.类和对象: (1)类的定义: public class 类名{ 类型 属性1: 类型 属性2: ……… public 返回值类型 方法名1(形参){ ...

  3. 1.2(java学习笔记)类与对象

      对象:是指具体的事物.比如学生 张三,老师 李四,代表一个单一的个体. 比如 学生 张三,这时张三就是具体的对象. 类:将对象中共有特征抽象出,可以理解为某种特性的集合. 世界上的事物可以分解成一 ...

  4. Java学习笔记——File类之文件管理和读写操作、下载图片

    Java学习笔记——File类之文件管理和读写操作.下载图片 File类的总结: 1.文件和文件夹的创建 2.文件的读取 3.文件的写入 4.文件的复制(字符流.字节流.处理流) 5.以图片地址下载图 ...

  5. Java学习笔记(2)--- 对象和类入门,java包,this 和 super区别

    1.对象和类(Object and class): 一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作. 面对对象编程是java非常重要的一部分,作者本身之前学过c ...

  6. Java学习笔记9(面象对象9:多态)

    多态概述 多态是继封装.继承后,面对对象的第三大特性. 现实事物经常会出现多态,如学生,学生是人的一种,则一个具体的同学张三既是学生也是人,即出现两种形态. Java作为面向对象的语言,同样可以描述一 ...

  7. Java 学习笔记 ------第五章 对象封装

    本章学习目标: 了解封装的概念与实现 定义类.构造函数与方法 使用方法重载与不定长度自变量 了解static方法 一.Java封装概念 在面向对象程式设计方法中,封装(英语:Encapsulation ...

  8. Java学习笔记六 常用API对象二

    1.基本数据类型对象包装类:见下图 public class Test { public static void main(String[] args){ Demo(); toStringDemo() ...

  9. Java学习笔记:04面向对象-内部类_访问修饰符_final

    04面向对象-内部类/访问修饰符/final 1.static的介绍 static:关键字,静态的 static的作用是用来修饰类中的成员 2.访问一个类中的某一个成员变量 方法一: _1.创建对象 ...

随机推荐

  1. Java 占位符使用 和 修饰符

    Java中占位符的使用 String类的format()方法 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象.熟悉C语言的同学应该记得C语言的sprintf()方法, ...

  2. thinkphp model模块

    1.获取系统常量信息的方法:在控制器DengLuController里面下写入下面的方法,然后调用该方法. public function test() { //echo "这是测试的&qu ...

  3. 使用sql更改表的列的数据类型和添加新列和约束

    修改数据库表某一列或添加列,转载的哦~ --增加一列 ALTER TABLE 表名 ADD 列名 VARCHAR(20) NULL --删除一列 ALTER TABLE 表名 drop COLUMN ...

  4. TCP协议学习记录 (三) Ping程序 RR选项 记录路由hop

    一开始想直接在上个程序改,自己构造IP包头,但后来发现不行,微软不让干了,所以后来选用libcap库来收发包 代码写的很乱.. #pragma pack(4) #define ECHO_REQUEST ...

  5. git资料图

  6. JAVA中获得一个月最大天数的方法(备忘)

    Calendar 类是一个抽象类,为日历字段之间的转换提供了一些方法.其中有一个重要方法 getActualMaximum ,该方法用于返回指定日历字段实际的最大值. 利用这个方法(Calendar. ...

  7. 关于delphi点击webbrowser中任意一点的问题

    关于delphi点击webbrowser中任意一点的问题 有时候我们需要delphi载入webbrowser1打开网页的时候 需要点击某一个点的位置 可能是坐标 可能是按钮 可能是其他的控件应该如何来 ...

  8. java基于socket公共聊天室的实现

    项目:一个公共聊天室功能的实现,实现了登录聊天,保存聊天记录等功能. 一.实现代码 1.客户端 ChatClient.java import java.io.BufferedReader; impor ...

  9. 5ucms后台调用标签

    <%=Rs.Data(1,i)%>栏目 <%=Rs.Data(2,i)%>标题 <%=Rs.Data(3,i)%>推荐 <%=Rs.Data(4,i)%> ...

  10. RHEL7学习之crontab无法执行ntpdate

    1,"/etc/crontab"文件 [root@localhost ~]# more /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/ ...