Java面向对象编程篇2——面向对象三大特点

Java面向对象编程篇2——面向对象三大特点

1、封装

1.1、封装的概念

通常情况下可以在测试类给成员变量赋值一些合法但不合理的数值,无 论是编译阶段还是运行阶段都不会报错或者给出提示,此时与现实生活不符

为了避免上述错误的发生,就需要对成员变量进行密封包装处理,来隐 藏成员变量的细节以及保证成员变量数值的合理性,该机制就叫做封装

1.2、封装实现流程

  • 私有化成员变量,使用private关键字修饰

  • 提供公有的get和set方法,并在方法体中进行合理值的判断

  • 在构造方法中调用set方法进行合理值的判断

2、继承

2.1、继承的概念

  • 当多个类之间有相同的特征和行为时,可以将相同的内容提取出来组成 一个公共类,让多个类吸收公共类中已有特征和行为而在多个类型只需 要编写自己独有特征和行为的机制,叫做继承。
  • 在Java语言中使用extends(扩展)关键字来表示继承关系。
  • 使用继承提高了代码的复用性,可维护性及扩展性,是多态的前提条件。
public class Worker extends Person{} - 表示Worker类继承自Person类
其中Person类叫做超类、父类、基类。
其中Worker类叫做派生类、子类、孩子类。

2.2、继承的特点

  • 子类不能继承父类的构造方法和私有方法,但私有成员变量可以被继承 只是不能直接访问
  • 无论使用何种方式构造子类的对象时都会自动调用父类的无参构造方法, 来初始化从父类中继承的成员变量,相当于在构造方法的第一行增加代 码super()的效果
  • 使用继承必须满足逻辑关系:子类 is a 父类,也就是不能滥用继承
  • Java语言中只支持单继承不支持多继承,也就是说一个子类只能有一个父 类,但一个父类可以有多个子类

3、多态

3.1、多态的概念

  • 多态主要指同一种事物表现出来的多种形态
  • 饮料:可乐、雪碧、红牛、脉动
  • 宠物:猫、狗、鸟、小强、鱼
  • 人:学生、教师、工人、保安
  • 图形:矩形、圆形、梯形、三角形

3.2、多态的格式

父类类型 引用变量名 = new 子类类型();

3.3、多态的特点

  • 当父类类型的引用指向子类类型的对象时,父类类型的引用可以直接调 用父类独有的方法
  • 当父类类型的引用指向子类类型的对象时,父类类型的引用不可以直接 调用子类独有的方法
  • 对于父子类都有的非静态方法来说,编译阶段调用父类版本,运行阶段 调用子类重写的版本(动态绑定)
  • 对于父子类都有的静态方法来说,编译和运行阶段都调用父类版本

3.4、多态的意义

多态的实际意义在于屏蔽不同子类的差异性实现通用的编程带来不同的效果

4、构造方法

.构造方法名与类名完全相同并且没有返回值类型

4.1、构造方法作用

使用new关键字创建对象时会自动调用构造方法实现成员变量初始化工作

4.2、构造方法格式

class 类名 {类名(形参列表) {构造方法体;}
}

4.3、构造方法注意事项

  • 当一个类中没有定义任何构造方法时,编译器会自动添加一个无参空构 造构造方法,叫做默认/缺省构造方法,如:Person(){}
  • 若类中出现了构造方法,则编译器不再提供任何形式的构造方法。

5、方法重载与方法覆盖重写

5.1、方法重载

与参数列表的数量、类型和顺序有关,与修饰符和返回值类型以及抛出异常类型无关

在一个类中为一种行为提供多种实现方式并提高可读性

public class Test3 {public int add(int a,int b){return a+b;}public int add(int a,int b,int c){return a+b+c;}
}

5.2、方法覆盖重写

父类方法无法满足子类的要求,子类通过方法重写满足需求

public class Test4 {public int add(int a,int b){return a+b;}
}
class Test5 extends Test4 {@Overridepublic int add(int a, int b) {return a-b;}
}

6、方法递归

6.1、递归的概念

方法自己调用自已

6.2、递归三要素

  • 一定有一种可以退出程序的情况;
  • 总是在尝试将一个问题化简到更小的规模
  • 父问题与子问题不能有重叠的部分

6.3、递归范例

public class Test6 {public static void main(String[] args) {System.out.println(add(100));}public static int add(int a){if (a!=1){return a+add(a-1);}else{return 1;}}
}

7、访问权限

访问权限本类本包的类子类非子类的外包类
public
protected
default
private
  • public: 所修饰的类、变量、方法,在内外包均具有访问权限;
  • protected: 这种权限是为继承而设计的,protected所修饰的成员,对所有子类是可访问的,但只对同包的类是可访问的,对外包的非子类是不可以访问
  • 包访问权限(default): 只对同包的类具有访问的权限,外包的所有类都不能访问;
  • private: 私有的权限,只对本类的方法可以使用;

8、static关键字

static是不允许用来修饰局部变量

8.1、static方法

static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。

public class Test7 {public static void main(String[] args) {Test8.sleep();}
}
class Test8{public static void sleep(){System.out.println("sleep~");}
}

8.2、sattic变量

static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。

static成员变量的初始化顺序按照定义的顺序进行初始化

8.3、static代码块

static关键字还有一个比较关键的作用就是 用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。

private static Date startDate,endDate;
static{startDate = Date.valueOf("2000");endDate = Date.valueOf("2021");
}

9、final关键字

9.1、修饰类

当用final修饰一个类时,表明这个类不能被继承。

9.2、修饰方法

类的private方法会隐式地被指定为final方法

方法无法被覆盖重写

9.3、修饰变量

对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象,但其属性仍可以更改。

9.4、final注意事项

  • 当用final作用于类的成员变量时,成员变量(注意是类的成员变量,局部变量只需要保证在使用之前被初始化赋值即可)必须在定义时或者构造器中进行初始化赋值,而且final变量一旦被初始化赋值之后,就不能再被赋值了。
  • static作用于成员变量用来表示只保存一份副本,而final的作用是用来保证变量不可变。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/557533.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

易语言php支付宝,支付宝填表登录易语言源码

支付宝填表登录易语言源码MS_晨星天宇.版本 2.支持库 spec.支持库 HtmlView.程序集 窗口程序集_窗口1.子程序 _按钮1_被单击调试输出 (开始登录 (超文本浏览框1, “”, “”)).子程序 开始登录, 文本型.参数 超文本浏览框, 超文本浏览框.参数 账号, 文本型.参数 密码, 文本型.参…

mybatis常用jdbcType数据类型

1 MyBatis 通过包含的jdbcType类型 BIT FLOAT CHAR TIMESTAMP OTHER UNDEFINEDTINYINT REAL VARCHAR BINARY BLOB NVARCHARSMALLINT DOUBLE LONGVARCHAR VARBINARY CLOB NCHARIN…

oracle 查询所有组合,Oracle的组合条件查询

组合条件查询,以下两种方式都可以:select b.job_id,b.source,b.create_via,b.who_create,b.location_code,b.ref_nofrom (select rownum r, a.*from (select j.*, cj.location_code, cj.ref_nofrom nfs_gbl.combine_job j, nfs_gbl.combine_job_criteria…

Java面向对象编程篇3——接口与抽象类

Java面向对象编程篇3——接口与抽象类 1、接口(interface) 接口中可以含有变量和方法。但是要注意,接口中的变量会被隐式地指定为public static final变量(并且只能是public static final变量,用private修饰会报编译…

oracle sql语句 只读,Oracle_SQL语句

------------------------Oracle 的SQL 语法--------------------------第(1,2)章 结 合 语 句》1:创建表空间create tablespace 表空间名datafile存放文件的路径_空间名_.dbf size 30m;》2: 分配权限grant 权限| 角色 to 用户名》3: 创建用户create use…

Java面向对象编程篇4——内部类

Java面向对象编程篇4——内部类 1、内部类的概念 当一个类的定义出现在另外一个类的类体中时,那么这个类叫做内部类 (Inner),而这个内部类所在的类叫做外部类(Outer)。 类中的内容:成员变量、…

oracle中$的用法,关于expdp 中query用法小结

今天看到群里有人问到关于在使用expdp导出数据中使用query参数报错的解决方法,自己也出于好奇心瞎折腾了一把,现记录如下1.第一次尝试的时候[oracleDB ~]$ expdp scott/scott tablesemp1 dumpfileemp1.dmp logfileemp1.log queryemp1:"where rownum…

Java面向对象编程篇5——枚举

Java面向对象编程篇5——枚举 1、枚举的概念 在日常生活中这些事物的取值只有明确的几个固定值,此时描述这些事 物的所有值都可以一一列举出来,而这个列举出来的类型就叫做枚举类型 2、枚举的定义 使用public static final表示的常量描述较为繁琐&am…

Java面向对象编程篇6——注解与反射

Java面向对象编程篇6——注解与反射 1、注解概述 Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制 Java 语言中的类、方法、变量、参数和包等都可以被标注。Java 标注可以通过反射获取标注内容。在编译器生成类文件时&…

oracle数据库支持2颗cpu,2.3 Oracle数据库中常见的性能问题

2.3 Oracle数据库中常见的性能问题这一节列出和描述了Oracle数据库中常见的性能问题。通过下面的Oracle性能调优方法,你应该可以避免这些问题,如果你遇到这些问题了,那么重复前面谈到的Oracle性能调优的步骤,或查阅适当的章节来解…

oracle fnd file.log,OracleEBSWIP模块DebugLog收集方法

How to generate WIP debug log files in ONLINE cases? For 11.5.10 and above, the WIP debug log files will be created ifHow to generate WIP debug log files in ONLINE cases?For 11.5.10 and above, the WIP debug log files will be created if1. FND: Debug Log F…

Java核心类库篇1——简介

Java核心类库篇1——简介 1、核心类库 包名主要功能java.applet提供了创建applet需要的所有类java.awt.*提供了创建用户界面以及绘制和管理图形、图像的类java.beans.*提供了开发Java Beans需要的所有类java.io.*提供了通过数据流、对象序列以及文件系统实现的系统输入、输出…

oracle更新blol字段超长,oracle - 将对象值插入表PL / SQL而无需指定属性 - 堆栈内存溢出...

我有以下架构DROP TABLE ALUMNO_ASIGNATURA;DROP TABLE ASIGNATURA;DROP TABLE TITULACION;DROP TABLE PROFESOR;DROP TABLE ALUMNO;DROP TABLE PERSONA;CREATE TABLE PERSONA( DNI VARCHAR2(9) CONSTRAINT PERSONA_PK PRIMARY KEY,NOMBRE VARCHAR2(20) CONSTRAINT PERSONA_NOM…

Java核心类库篇2——lang

Java核心类库篇2——lang 1、Object 该类是所有类的父类,每个类都使用它作为超类,没有任何属性 方法声明功能介绍Object()使用无参方式构造对象boolean equals(Object obj)用于判断调用对象是否与参数对象相等。 该方法默认比较两个对象的地址是否相等…

Java核心类库篇3——util

Java核心类库篇3——util 1、Date 用于描述特定的瞬间,也就是年月日时分秒,可以精确到毫秒 1.1、构造方法 方法声明功能介绍public Date()获取当前时间表示的date对象public Date(long date)根据给定的毫秒值创建date对象 public class Test {public…

linux怎么重装ssh服务器,Linux平台下安装SSH

什么是SSH?Secure Shell(缩写为SSH),由IETF的网络工作小组(Network Working Group)所制定;SSH为一项创建在应用层和传输层基础上的安全协议,为计算机上的Shell(壳层)提供安全的传输和使用环境。传统的网络服务程序,如r…

Java核心类库篇4——集合

Java核心类库篇4——集合 1、集合的意义 记录单个数据内容时,则声明一个变量记录多个类型相同的数据内容时,声明一个一维数组记录多个类型不同的数据内容时,则创建一个对象记录多个类型相同的对象数据时,创建一个对象数组记录多…

计划任务文件 linux,Linux之任务计划

一、单次任务计划二、周期性任务计划一、单次任务计划命令:batch:系统空闲时自动执行,不常用at:可以使用相对时间、绝对时间或模糊时间,例如相对时间:at now3min,表示3分钟后执行绝对时间&#…

Java核心类库篇5——异常

Java核心类库篇5——异常 java.lang.Throwable类是Java语言中错误(Error)和异常(Exception)的超类其中Error类主要用于描述Java虚拟机无法解决的严重错误,通常无法编码解决,如:JVM挂掉了 等其中Exception类主要用于描述因编程错误或偶然外在…

linux2019内核版本发布,求问Linux最新内核版本以及发布日期。

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼具有时效性的东西,百度能查处什么鬼来。mainline:4.3-rc32015-09-27[tar.xz][pgp][patch][view diff][browse]stable:4.2.22015-09-29[tar.xz][pgp][patch][inc. patch][view diff][browse][changelog]longterm:4.1.920…