微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java的面向对象

面向对象


什么是对象呢?老师说过万物皆对象。每个对象都具有各自的状态特征(也可以称为属性)及行为特征(方法),java就是通过对象之间行为的交互来解决问题的。

   三大特征

  • 封装:核心思想就是“隐藏细节”、“数据安全”,将对象不需要让外界访问的成员变量和方法私有化,只提供符合开发者意愿的公有方法来访问这些数据和逻辑,保证了数据的安全和程序的稳定。所有的内容对外部不可见。
  • 继承:子类可以继承父类属性方法,并对其进行拓展。将其他的功能继承下来继续发展 。
  • 多态:同一种类型的对象执行同一个方法时可以表现出不同的行为特征。通过继承的上下转型、接口的回调以及方法的重写和重载可以实现多态。方法的重载本身就是一个多态性的体现。

类与对象

类是对某一类事物的抽象描述,对象用于表示现实中该类事物的个体。

类必须通过对象才可以使用,对象的所有操作都在类中定义。

类中可以定义成员变量和成员方法,其中成员变量用于描述对象的特征,也被称作属性,成员方法用于描述对象的行为,可简称为方法

对象的创建与使用:类名 对象名=new 类名();

所有类的对象都是通过new关键字创建

访问类中的属性: 对象.属性

调用类中的方法: 对象.方法(实际参数列表) ;

  • 类必须编写在.java文件
  • 一个.java文件中,可以存在N个类,但是只能存在一个public修饰的类
  • .java文件文件名必须与public修饰的类名完全一直
  • 一个包中不能有重名的类

类的封装:私有化属性,创建getter与setter方法

匿名对象

没有对象名称的对象就是匿名对象 (栈内存中没有名字,而堆内存中有对象)
匿名对象只能使用一次,因为没有任何的对象引用,所以将称为垃圾,等待被GC回收
只使用一次的对象可以通过匿名对象的方式完成,这一点在以后的开发中将经常使用到


构造方法


构造方法的定义:

  • 方法名与类名相同
  • 方法名的前面没有返回值类型的声明
  • 方法中不能使用return语句返回一个值,但是可以单独写return语句来作为方法的结束

构造方法的重载:

修饰符


控制访问修饰符


Java中,可以使用控制访问的修饰符来控制其访问权限,从而实现对类、成员变量和方法访问的保护

public
public:公共的,共有的

public:可以修饰类,成员变量和方法

public:表示对所有的类都开放,可以被所有的类访问,如果被访问的public类与使用类不在一个包下,就需要先导入被访问public类的包

protected
protected:被保护的

protected:可以修饰成员变量、方法和内部类,它不能用来修饰类,它也不能用来修饰接口、接口的成员变量和接口的方法

被protected修饰的只能被同一包中的类和子类访问

default
default:认的

使用default就相当于不添加控制访问的修饰符,它能修饰类,成员变量和方法

被default修饰的只能被同包下的类所访问

private
private:私有的

private不允许用来修饰类(但是可以修饰内部类),它能够修饰成员变量和方法

被private修饰的只能被本类所访问

非控制访问的修饰符


非控制访问的修饰符就是用来实现其他的一些功能

static
static:静态的
static修饰符用来修饰变量和方法

  • 静态变量:static关键字用来声明独立于对象的静态变量,无论一个类有多少个实例化对象,它的静态变量都只有一份,它同类一起加载,所以它不需要实例化类,就能被使用。静态变量也称作类变量。这里注意局部变量不能声明为static变量
  • 静态方法:static用来声明独立于对象的静态方法,静态方法中不能使用非静态的成员变量和非静态方法。它也是和类同时加载,所以它也不需要实例化类,就可以直接被使用

final
final:最终的
final修饰符用来修饰类、成员变量和方法

final类:表示最终的类,该类不允许被继承

final变量:表示最终的变量,该变量一经赋值,就不能被修改

final方法:表示最终的方法,它能被子类所继承,但是该方法不能被子类所重写

abstract
abstract:抽象的

abstract用来修饰类和方法

  • 抽象类:抽象类不能用来实例化对象,声明抽象类的唯一目的是为了对该类进行扩充,一个类不能被abstract和final同时修饰,如果一个类中含有抽象方法,该类一定要声明为抽象类。但是抽象类中可以包含抽象方法和非抽象方法
  • 抽象方法:抽象方法是一种没有实现的方法,它不包含方法体,没有{},它就是为了让继承此类的子类将其实现,抽象方法不能用final和static修饰

synchronized
synchronized:同步的

synchronized用于修饰方法,还可用做代码块的修饰

synchronized修饰的方法或者代码块,在同一时间内只能被一个线程所访问

transient
transient:短暂的
transient用于修饰成员变量

transient包含在定义变量的语句中,用来预处理类和变量的数据类型。序列化的对象包含被transient修饰的实例变量时,JVM会跳过该特定的变量

volatile
volatile:不稳定的
volatile用于修饰成员变量

volatile修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。当成员变量发生变化时,会强制线程将变化值回写到共享内存中。这样在任何时候,两个不同的线程总是看到某个成员变量的同一个

内部类


在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类

  • 成员内部类
  • 局部内部类
  • 匿名内部类
  • 静态内部类

抽象类


抽象类必须使用abstract

一个抽象类中可以没有抽象方法,抽象方法必须写在抽象类或者接口中

抽象方法(不能被实例化)

  • 只声明而未实现的方法称为抽象方法(未实现指的是:没有{}方法体),抽象方法必须使用abstract关键字声明
  • 抽象类本身是不能直接进行实例化操作的,即:不能直接使用关键字new完成。 不能被我们创建,但是jvm虚拟器可以创建
  • 一个抽象类必须被子类所继承,被继承的子类(如果不是抽象类)则必须重写抽象类中的全部抽象方法
  • 抽象方法没有方法体,不可以被调用

类的继承


在Java中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类,现有类被称为父类,子类会自动拥有父类的所有可继承的属性方法

接口


Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能

  • 定义接口的关键字是 interface
  • 接口的实现关键字是 implements
  • 接口中只能有常量和未实现的方法
  • 类可以单继承,接口可以多实现,多个接口使用逗号隔开,一个类在继承类后,还可以实现接口,但是继承必须在前

多态


多态就是对象的多种表现形式,在类中有子类和父类之分,子类就是父类的一种形态 ,对象多态性就从此而来

  • 重载:一个类中方法的多态性体现 
  • 重写:子父类方法的多态性体现
  • 对象的类型转换:子类对象转父类,直接转换即可,父类对象转子类,需要进行类型判断,不然会报错 (instanceof可以判断当前对象是否属于这个类型)
  • Object是所有类的父类

异常 


Java中的异常(Exception)又称为例外,是一个在程序执行期间发生的事件,它中断正在执行程序的正常指令流。为了能够及时有效地处理程序中的运行错误,必须使用异常类 

  • 异常的父类:Throwable,它有两个子类,分别是Error与Exception;
  • Error称为错误类,表示Java程序在运行时产生的系统内部错误或资源耗尽的错误,这类仅依靠修改代码不能恢复执行
  • Exception称为异常类,表示程序本身可以处理的错误
  • Exception:异常类分两种,一种是RuntimeException(运行时异常),一种是编译时异常

异常的处理方式

  • 使用try{}catch(){}finally{}语句处理异常,try{}这个里面写的是可能会出现异常的代码,catch(){}这个里面写的是捕获到的异常,以及捕获到相应异常后的处理,finally{}不管之前的代码是否有异常都会执行的语句(除非调用System.exit())
  • 使用Throws关键字处理异常,往往会在声明一个方法时使用Throws抛出异常,表示当前方法存在异常,在调用方法时应当处理这个异常,否则会出现编译时异常

自定义异常:继承Exception或其子类
 

原文地址:https://www.jb51.cc/wenti/3279793.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐