Java面向对象核心技能

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修饰的成员。

      例:

1 super.name;                //访问直接父类的name属性
2 super.test();              //访问直接父类的test方法
3 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。

时间: 2024-10-27 04:24:41

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

java面向对象的核心思想

Java面向对象-抽象类与接口 1.Java final关键字的使用 package edu.tongji.fni; /*final关键字 * 1.final关键字在java中被称为完结器,表示最终的意思 * 2.final能声明类.方法.属性: * 使用final声明的类不能被继承 * 使用final声明的方法不能被重写 * 使用final声明的变量变成常量,常量是不可以被修改的 */ class People{ //前面加了final下面的类会报错 public void tell(){ }

Java软件工程师技能图谱

原文链接:Java软件工程师技能图谱 最近在考虑"拥有怎样的技能才能算一名合格的java软件工程师呢?"这个问题.碰巧在github发现一个很棒的开源项目--程序员技能图谱.@Zhang Wei写的Java Software Engineer Skill Map确实能解答我心中的疑问.好的东西应该向更多的人,我将英文版本根据自己的理解写成中文版,并补充了相应的学习资料(书籍是可下载的,中文书籍可能存在版权问题,推荐书籍都是比较经典的英文教材).希望这次整理能帮助更多的人解答心中的疑惑.

史上最全java架构师技能图谱(上)

java架构师最全技能图谱上篇,包含:数结构算法.java进阶.web开发.框架与工具四大技能图谱.下篇将包含大数据以及性能.设计模式.UML.中间件.分布式集群.负载均衡.通讯协议.架构设计等技术图谱等章节本文作者,陈睿 优知学院创始人,免费提供系统的互联网产品技术进阶干货资料和课程,以及定期的线下实战活动. 一:数据结构算法 算法分析 时间复杂度和空间复杂度 算法思想 递推.递归.穷举.贪心.分治.动态规划.迭代.分枝界限 数据结构 数组.链表.堆.栈.队列.Hash表.二叉树等 算法 排序

第5篇-JAVA面向对象Ⅰ

第5篇-JAVA面向对象Ⅰ 每篇一句 :面向对象面向君,不负代码不负卿 初学心得: 代码虐我千百遍,我待代码如初恋 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-04-03| JAVA面向对象 Ⅰ] 1.JAVA作为一种面向对象语言,具有以下基本概念: ● 多态 ● 继承 ● 封装 ● 抽象 ● 类 ● 对象 ● 实例 ● 方法 ● 重载 2.面向对象 什么是面向对象?: 面向对象是一种编程思想 通俗的说:面向对象是一种思考问题的思维方式 为什么使用面向对象以及它的作用 计算机语

java面向对象基础

思想 面向过程:是分析出解决问题所需的步骤,从上往下步步求精,自顶向下的编程,最重要的是模块化思想,考虑实际的实现 优点:性能高 面向对象:以事物为中心,将事物高度抽象为对象,对象包括属性与行为. 优点:易重用.易扩展.易维护.适合大型项目 联系与区别 联系:面向对象也含有面向过程的思想 区别:面向过程是一件事"该怎么做",面向对象是一件事"该让谁来做" 举例 汽车发动  汽车到站 面向过程  汽车发动与汽车到站分别为两个事件,形成两个函数,依次调用 面向对象  关

黑马程序员-Java面向对象上《二》

                         ------- android培训.java培训.期待与您交流! ---------- 1.面向对象的设计思想  面向过程:是以一个流程为单位,考虑它的实现方法,关心的是它的功能实现. 面向对象:是以具体事物为单位,考虑它的属性(特征)和动作(行为). 2.面向对象思考问题的方式 有哪些对象? 对象有什么特征和功能? 对象之间的关系? 3.类和对象 3.1,面向对象的编程思想:是力图使计算机语言中对事物的描述尽可能的与现实中的该事物的本来面目一致

Java面向对象学习

/*package com.fish.object; java面向对象的语言 对象:真实存在唯一的事物.比如我家的狗 类: 实际就是对某种类型事物的共性属性与行为的抽取.  抽象的概念....   车 类---->图纸  对象--->真实存在的事物 我们从小的时候就不断的接触很多的对象,我们的大脑就会把 这些具备相同属性与行为的事物进行分类. 在现实生活中就存在对象与类这两种事物.计算机是服务于人类,为了让计算机更加接近我们的 生活,这时候就出现了面向对象的计算机语言. 面向过程(C)    

Java实验报告二:Java面向对象程序设计

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

java的第二个实验——JAVA面向对象程序设计

java的第二个实验——JAVA面向对象程序设计 北京电子科技学院 实     验    报     告 课程:Java程序设计 班级:1352 姓名:林涵锦 学号:20135213 成绩:        指导教师:娄嘉鹏  实验日期:2015.4.14 实验密级: 预习程度:  实验时间:19:30~21:50 仪器组次:13 必修/选修:选修 实验序号:2 实验名称:JAVA面向对象程序设计 实验目的与要求: 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态