1、封装

  封装是面向对象的三大特性之一,就是将类的状态信息隐藏在类内部,不允许外部程序直接访问,而通过该类提供的方法来实现对隐藏信息的操作和访问。

   封装的好处:隐藏类的实现细节;让使用者只能通过程序规定的方法来访问数据;可以方便的加入存取控制语句,限制不合理操作。

   封装的步骤:修改属性的可见性来限制对属性的访问;为每个属性创建一对赋值方法和取值方法,在赋值方法中加入对属性的存取控制语句。

   封装使用到的权限控制符:private(私有的)、public(公开的)、protected(对子类和同包的类开放的)

   延伸:static修饰符

      static可以用来修饰属性、方法、代码块。static修饰的变量是属于这个类所有的,不属于某一个对象。所以由这个类创建出来的所有对象共同享用一个static变量。

      被static修饰的属性和方法通常被称之为类属性和类方法。不被static修饰的则成为实例属性和实例方法。

      static块:static块只在类被创建时加载一次,直到程序结束。通常用于初始化在程序中从程序开始到程序结束只赋一次值的属性。

            语法:static {//代码块}

2、继承

   继承是面向对象的三大特性之一,是Java中实现代码重用的重要手段之一。Java中只支持单继承,即每个类只能有一个直接父类。

   在Java中,所有的Java类都直接或间接的继承了Object类。Object类是所有Java类的祖先。在定义一个类时,如果没有使用extends关键字,那么这个类直接继承Object类。

   在Java中,子类可以从父类中继承到以下“财产”:

      1.继承public和protected修饰的属性和方法,无论子类和父类是否在同一个包里。

      2.继承默认权限修饰符(friendly)修饰的属性和方法,但子类和父类必须在同一个包里。

      3.无法继承父类的构造方法。

      4.无法继承private修饰的属性和方法。

   另外,在子类中可以根据需求对从父类中继承的方法进行重写(或称覆盖)。在进行重写的时候需要注意以下几点:

      1.重写方法和被重写方法必须具有相同的方法名。

      2.重写方法和被重写方法必须具有相同的参数列表。

      3.重写方法的返回值类型必须和被重写方法的返回值类型相同或是其子类。

      4.重写方法不能缩小被重写方法的访问权限。

   super关键字:

      在使用继承来编程的过程中常常会用到“super”关键字。

      super代表对当前对象的直接父类对象的默认引用。在子类中可以通过super关键字来访问父类中的成员。

      在使用super关键字访问父类成员时,需要注意以下几点:

          1.super关键字必须出现在子类(子类的方法和构造方法)中,而不是其他位置。

          2.可以访问父类的成员,如父类的属性、方法、构造方法。

          3.使用时需注意父类中权限的限制,不能使用super访问父类中private修饰的成员。

      例:

 super.name;                //访问直接父类的name属性
super.test(); //访问直接父类的test方法
super(name); //访问直接父类的对应构造方法,只能出现在构造方法中

   关于继承中构造方法需要注意的事项:

      1.如果子类中没有显示的调用父类的构造方法,系统会优先调用父类中的无参构造方法。

      2.在程序运行时,总是会先调用父类的构造方法。

   延伸:重载:

      重载是同一个类中的方法有不同的实现,只要求方法名和参数列表不同,和返回值类型、访问修饰符无关。

3、抽象类和抽象方法

   C#中的抽象类和抽象方法基本和Java中的一样,之前已总结C#中的抽象类和抽象方法,故此次只做简单总结&回顾。

   在Java中抽象类和抽象方法的特点如下:

      1.抽象类和抽象方法都通过abstract关键字来修饰。

      2.抽象类不能实例化。抽象类中可以没有、有一个或多个抽象方法,也可以全部都是抽象方法。

      3.抽象方法只有声明,没有方法实现。由抽象方法的类必须是抽象类。子类必须重写所有的抽象方法,除非子类还是一个抽象类。

   延伸:final关键字:

      final可以用来修饰类、方法和属性,不能修饰构造方法。

      final修饰的类被称为“最终类”,不能被继承。

      final修饰的方法不能被重写。

      final修饰的属性会变成常量,除初始化时不能在其他地方被修改。

4、多态

    C#中的多态和Java中的基本相同,因之前做过C#的多态总结,故此次只做简单总结。

   多态即同一个实现接口,使用不同的实例而执行不同的操作。

   子类转换成父类时需注意的规则:

      1.将一个父类的引用指向一个子类对象,称为向上转型,自动进行类型转换。

      2.通过父类引用变量调用的方法是子类覆盖或继承的父类的方法,不是父类的方法。

      3.通过父类引用变量无法调用子类特有的方法。

   父类转换成子类时需注意的规则:

      1.父类转换成子类称为向下转型,需要进行强制转换。

      2.在强制转换时为了避免一场,可以通过instanceof关键字。

   instanceof关键字:

      instanceof关键字用来判断一个对象是否属于一个类或者实现了一个借口,结果为true或false。和C#中的is关键字作用相同。

5、接口

   接口和抽象类大致相同,抽象类注重的是代码的复用,而接口注重的是代码的扩展和维护。接口是一种规范和标准,可以约束类的行为。

   通过面向接口编程可以降低代码间的耦合性,提高代码的可扩展性和可维护性。

   在开发系统时,主体构架使用接口,接口构成系统的骨架,这样就可以通过更换实现接口的类来实现更换系统。

   接口的定义:

      1.接口的命名规则和类相同。

        例:   public interface 接口名 {

             }

      2.接口中可以定义常量,不能定义变量。接口中的属性都会自动用public static final修饰。接口中的常量必须在定义时指定初始值。

      3.接口中所有关的方法都是抽象方法。接口中方法都会自动用public abstract修饰。

      4.接口不能被实例化,接口中不能有构造方法。

      5.接口之间通过extends实现继承关系。一个接口可以继承多个接口,但接口不能继承类。

      6.接口的实现类必须实现接口中的全部方法,否则必须定义为抽象类。

   一个类只能有一个直接父类,但可以通过implements实现多个接口。但如果在继承父类的同时又实现了接口的时候,extends关键字必须在implements关键字之前。

   C#中接口的使用和Java中的大致相同,只是在实现的时候使用冒号“:”而不是implements。

Java面向对象核心技能的更多相关文章

  1. [java学习笔记]java语言核心----面向对象之this关键字

    一.this关键字 体现:当成员变量和函数的局部变量重名时,可以使用this关键字来区别:在构造函数中调用其它构造函数 原理:         代表的是当前对象.         this就是所在函数 ...

  2. Java核心基础第5篇-Java面向对象_类和对象

    Java面向对象之类和对象 一.面向对象概述 Java是完全的面向对象编程(Object Oriented Programming),简称OOP. 面向对象编程的思维方式更加符合大家的日常生活,因为我 ...

  3. [java学习笔记]java语言核心----面向对象之构造函数

    1.构造函数概念 特点: 函数名与类名相同 不用定义返回值类型 没有具体的返回值 作用:                给对象进行初始化 注意: 默认构造函数 多个构造函数是以重载出现的 一个类中如果 ...

  4. java面向对象的核心思想

    java面向对象的特征之一:封装 1.封装性的使用 package edu.tongji.classdemo; /* 封装性 1.封装的目的:保护某些属性和方法不被外部所见 2.封装的实现 为属性和方 ...

  5. 2016-2017-2 20155339 《Java面向对象程序设计》实验三敏捷开发与XP实践实验报告

    2016-2017-2 20155339 <Java面向对象程序设计>实验三敏捷开发与XP实践实验报告 实验内容 XP基础 XP核心实践 相关工具 实验内容 一.在IDEA中使用工具(Co ...

  6. Java软件工程师技能图谱

    原文链接:Java软件工程师技能图谱 最近在考虑"拥有怎样的技能才能算一名合格的java软件工程师呢?"这个问题.碰巧在github发现一个很棒的开源项目--程序员技能图谱.@Zh ...

  7. 实验二 Java面向对象程序设计

    实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...

  8. 20145213《Java程序设计》实验二Java面向对象程序设计实验报告

    20145213<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装,继承,多态 初步掌握UML建模 熟悉S.O. ...

  9. 20145206《Java程序设计》实验二Java面向对象程序设计实验报告

    20145206<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...

随机推荐

  1. [Linux] - Linux下安装jdk,tar方式

    下载jdk的linux下版本,下载页面http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.ht ...

  2. C:\Users\用户名\AppData里面的文件可以删除吗

    很多人发现电脑中C:\Users\用户名\AppData 占据了很大的空间,那么可以将其删除吗?下面为大家详细介绍相关知识! C:\Users\用户名\AppData里面一般有三个文件夹,分别是Loc ...

  3. 基于Quartz.NET框架的WinForm任务计划管理工具

    最近接到一个小需求 ——可以定期同步20个Sql Server 7.0数据库里的数据(数据量会预计>10000),并保存为cvs格式文件 ——可以设置保存文件数据量 ——该应用需要用WinFor ...

  4. php新建数据库对象 基础知识

    数据访问 结合html 数据库 PHP面向对象的方式函数的方式 1建立通道 MySQLi 类通过构造函数造出 连接数据库地址 uesername 连接用户名 passwd dbname port so ...

  5. android学习8——获取view在屏幕上的绝对坐标

    获取view在屏幕上的绝对坐标在调试时候非常有用. 看如下代码 public class AbsolutePosActivity extends Activity { @Override public ...

  6. 每天一个linux命令(38)--lsof 之FD文件描述符

    一般lsof 会输出以下这些信息: COMMAND: 进程的名称 PID:进程标识符 PPID:父进程标识符(需要指定-R参数) USER:进程所有者 PGID:进程所属组 FD:文件描述符,应用程序 ...

  7. C#的数据类型、数据类型的转化

    一.c#有15个预定义类型,其中13个是值类型,两个是引用类型(string 和 object)这里主要说明整型.浮点型.布尔型以及引用型 1.整型数据 2.浮点型 浮点型从精度有低到高有float. ...

  8. Java面试系列

    如果你的面试简历是如下这样写的,请务必准备回答下面的所有问题. 面试职位:Java高级工程师 专业技能: (1)牢固掌握Java基础知识,如集合.并发.I/O等,并对Java源码有一定的研究. (2) ...

  9. 使用php ajax写省、市、区、三级联动

    题目要求: 要求:写一个省市区(或者年月日)的三级联动,实现地区或时间的下拉选择. 实现技术:php ajax 实现:省级下拉变化时市下拉区下拉跟着变化,市级下拉变化时区下拉跟着变化. 使用china ...

  10. 2818: Gcd

    2818: Gcd Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 2170  Solved: 979[Submit][Status][Discuss] ...