文档章节

Java语言学习(六):面向对象进阶

海岸线的曙光
 海岸线的曙光
发布于 2018/07/16 13:13
字数 1017
阅读 46
收藏 3

    上篇博客中我们初步认识了Java面向对象编程,下面进一步学习下。

    面向对象编程三大特性:封装、继承、多态。

    封装隐藏了类的内部实现机制,对外界而言它的内部细节是隐藏的,暴露给外界的只是它的访问方法。

    继承是面向对象程序设计的基本特性之一,其基本语法为:

public class A extends B {}

    表示类A继承了类B,其中:类A称为子类、派生类或孩子类,类B称为超类、基类或父类。

    重写是只能应用在方法上,其注解为@Override,方法的重写只能发生在存在继承关系的类中,需要注意:重写方法与原来方法签名要相同,即方法名称和参数要相同,包括顺序。

    抽象类中可以定义抽象方法,使用abstract修饰,也可以定义普通方法,包含抽象方法的类必须是抽象类,而抽象类不是必须包含抽象方法。对于抽象方法来说,仅定义一个声明即可,即抽象方法无方法体。抽象类的简单声明为:

pubic abstract class A {}

抽象方法的简单声明为:

public abstract int getA();//无方法体

    注意:抽象类是不能直接实例化的,如果要获得该类的实例可以使用静态方法创建其实现类对象。

    多态是面向对象程序设计的基本特性之一,Java的多态主要是通过重写父类(或接口)中的方法来实现的,好处是可以屏蔽对象之间的差异,从而增强了软件的扩展性和重用性。

    下面通过一个实例来说明下上面所说的特性:

    (1)任务:通过实例进一步熟悉封装、继承、重写、抽象、多态等的使用

    (2)准备工作:了解封装、继承、重写、抽象、多态

    (3)编程:

    定义父类Car:

public abstract class Car {
   public abstract String getInfo();
}

    定义子类BMW,继承类Car:

public class BMW extends Car{
   //重写父类的方法
   @Override
   public String getInfo() {
      return "BMW";
   }
}

    定义子类Benz,继承类Car:

public class Benz extends Car{
   //重写父类的方法
   @Override
   public String getInfo() {
      return "Benz";
   }
}

    定义类CarFactory,并定义静态方法,通过指定车型创建对象(简单工厂模式的应用):

public class CarFactory {
   public static Car getCar(String name){
      if(name.equalsIgnoreCase("BMW"))
          return new BMW();
      else if(name.equalsIgnoreCase("Benz"))
          return new Benz();
      else
          return null;
   }
}

    定义测试类TestCar:

public class TestCar {
   public static void main(String[] args) {
       Car bmwCar = CarFactory.getCar("BMW");
       System.out.println("车型为:"+bmwCar.getInfo());
       Car benzCar = CarFactory.getCar("Benz");
       System.out.println("车型为:"+benzCar.getInfo());
   }
}

    (4)运行:输出相应对象信息

    上面的实例应用到了工厂模式,也有其他的一些模式,比如:策略模式、适配器模式等,这里不做阐述了,自行学习下吧。

    在类中,除了可以定义域、方法和块,还可以定义类,这种类称为内部类,其简单的声明语法为:

public class Outter{
   class Inner{}
}

    内部类可以使用外部类中定义的属性和方法,即使为私有的。它可以分为普通内部类、局部内部类(将类定义在方法的内部)、匿名内部类、静态内部类(使用static修饰的内部类),具体的使用不做详述了。

    在Java中,调用类的方法有两种方式:对于静态方法可直接使用类名调用,对于非静态方法必须使用类的对象调用。

    当然,还有很多需要注意的地方,这里不做补充了,大家在编程中遇到时注意就好了。

© 著作权归作者所有

海岸线的曙光

海岸线的曙光

粉丝 46
博文 54
码字总数 59291
作品 0
通州
程序员
私信 提问
加载中

评论(0)

大数据开发培训:0基础学习Java编程语言有哪些知识点?

Java 技术通用、高效、具有平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网等,学习Java首先要知道学习知识点有哪些。在这就用加米谷大数据培训...

加米谷大数据
2018/07/25
2
0
Java程序员必读书单,家族又添新成员

点击关注异步图书,置顶公众号 每天与你分享IT好书 技术干货 职场知识 参与文末话题讨论,每日赠送异步图书。 ——异步小编 有些革命出其不意地吸引了全世界的眼球。Twitter、Linux操作系统和...

异步社区
2018/05/09
0
0
Python 爬取 11 万 Java 程序员信息竟有这些重大发现!

一提到程序猿,我们的脑子里就会出现这样的画面: 或者这样的画面: 心头萦绕的字眼是:秃头、猝死、眼镜、黑白 T 恤、钢铁直男…… 而真实的程序猿们,是每天要和无数数据,以及数十种编程语...

p柯西
2018/06/19
0
0
2020年,除了《深入理解java虚拟机》,还有哪些java书籍值得一看?

  2020年伊始,很多新粉丝立下了几大目标,其中热门目标之一就是,一年看十本技术书籍,问我有什么推荐,那我就姑且推荐一番,看看除了周志明的《深入理解java虚拟机》之外,还有哪些书籍值...

java进阶架构师
01/01
0
0
Java开发|Java新手应该怎么学习|2018年Java走势|

微信跳一跳你玩过吗,你知道怎么用Java开发出来吗?有时间可以研究一下!言归正传! 在2017回,java,发展程度超出我们的想象,对技术的要求也越来越高,从最初的前端、后端的布局,目前整个堆...

糖宝_d864
2018/06/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

RabbitMQ消息中间件技术精讲笔记

[TOC] RabbitMQ消息中间件技术精讲笔记 错别字有点多, 改了一部分. 剩下的不影响阅读,实在没精力改了... 业界主流消息中间件介绍 MQ衡量指标 服务性能 数据存储 集群架构 主流MQ介绍 Active...

我爱吃炒鸡
17分钟前
11
0
从"曼巴精神"中学到的做事方式

致敬曼巴 最近一直想写一篇关于曼巴精神的文章,作为科比球迷,今年发生的事情的确让我们难过,不过生活还要继续,虽然科比已经离开了我们,但曼巴精神永存,下面从几点来讲述曼巴精神在我们...

科比可比克
18分钟前
9
0
使用JavaScript在文本框中的Enter键上触发按钮单击

问题: I have one text input and one button (see below). 我有一个文本输入和一个按钮(见下文)。 How can I use JavaScript to trigger the button's click event when the Enter key ......

技术盛宴
28分钟前
23
0
展示如何在checkout里使用quote,quote item, address, shopping cart

展示如何更改并且在定制化的时候高效应用这些模块。 以下实体继承 \Magento\Framework\Model\AbstractExtensibleModel ,所以你可以使用第4章中讨论的可扩展属性。 Quote Quotes 是客户购物车...

忙碌的小蜜蜂
54分钟前
18
0
面向对象思想设计原则及常见设计模式

1、面向对象思想设计原则 在实际的开发中,我们要想更深入的了解面向对象思想,就必须熟悉前人总结过的面向对象的思想的设计原则 1.1、单一职责原则 高内聚,低耦合 每个类应该只有一个职责,...

庭前云落
今天
31
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部