java是一门纯面向对象的程序设计语言,它具有三大特性,分别是封装,继承和多态。

一、封装

  封装,就是将对象的属性和方法封装起来,使用户知道对象提供的属性和方法,而不必去探究它的内部实现。比如手机就是一个封装的对象,使用手机打电话的时候你只要输入手机号码就可以了,而不会去管手机是怎样工作的。采用封装的原则可以使对象以外的部分不能随便存取改变对象内部的数据,有效地避免了外部错误对内部数据的影响,并且封装也可提高程序的维护性,当一部分出错的,只要接口没变,其他地方就不用改变。

二、继承

  继承按照平常意思可以理解为儿子从父亲那里继承财产,这里的继承和那个继承是同一个意思,只是继承的不是财产,而是属性和方法,并且实体不是儿子和父亲,而是子类和父类。比如动物园有许多动物,其中有鸟,老虎等等。那我们可以编写一个动物类,一个鸟类。动物园中所有的生物都统称为动物类,也就是说动物类有着动物园里所有生物共有的属性和方法。鸟也属于动物,但是每一种动物都有不同的特点,比如鸟会飞,也就是说鸟也有着它自己特有的属性和方法。所以,动物园中的所有动物可以看成是既有着相同的属性和方法,又有着各自特有的属性和方法。而那些相同的属性和方法就可以看成是从父类继承下来的。所以,鸟类是动物类的子类,动物类是鸟类的父类,而在类的声明中。可以用关键字extends来指明其父类。

语法格式:[修饰符] class 子类名 extends 父类名{}

public class Animal{//父类int age;String sex;//动物都有的属性public void eat(){System.out.println("吃东西");//动物都有的方法
  }public void sleep(){System.out.println("睡觉");}}public class Bird extends Animal{//子类
  String type;public void fly() {eat();//调用来自于父类的方法
    sleep();System.out.println("鸟会飞");}
}

  子类可以继承父类中所有可以被子类继承的属性和方法,但有几点需注意。

  1.只有父类中被public和protected修饰的属性和方法才能被继承,而被private修饰的不能被继承。

  2.若子类声明了与父类同名的方法和属性,则父类的属性和方法将被隐藏和覆盖,不能被继承。

  

public class Animal{//父类int age;String sex;//动物都有的属性public void eat(){System.out.println("吃东西");//动物都有的方法
  }public void sleep(){System.out.println("睡觉");}}public class Bird extends Animal{//子类String type;String sex;//动物都有的属性public void eat(){System.out.println("吃东西");//动物都有的方法
  }public void fly() {sleep();System.out.println("鸟会飞");}
}//此时父类的sex和eat()将被隐藏和覆盖,子类调用的是自己的sex和eat()而不是父类的。

  刚刚说到如果在子类中声明了与父类相同的属性和方法时,父类的该属性和方法将被隐藏,那如果想要使用父类的方法和属性,应该怎么办呢?这就要用的super关键字了。

  super关键字主要有两种用途。

  1.调用父类的构造方法。

  格式:super(参数列表),但这条语句必须是子类构造方法的第一条语句,否则报错。

2.操作被隐藏的属性和方法。

  格式:super.属性,super.方法。

public class Animal{int age;String sex;//动物都有的属性public Animal(int age,String sex) {this.age = age;this.sex = sex;}public void eat(){System.out.println("吃东西");//动物都有的方法
  }public void sleep(){System.out.println("睡觉");}
}public class Bird extends Animal{String type;public Bird(int age,String sex,String type) {super(age,sex);//super调用父类构造方法,放在第一句this.type = type;}public void eat(){System.out.println("鸟吃东西");//动物都有的方法
  }public void fly() {super.eat();//调用隐藏的方法
        sleep();System.out.println("鸟会飞");}}

三、多态

  多态是java语言的三大特性之一,通常使用方法重载和方法覆盖实现多态。

  方法重载是指在一个类中出现多个参数列表不同(可以使参数个数不同,或者参数类型不同,也可以是参数顺序不同)但方法名相同的方法。在方法重载时,方法的返回值不能作为区分方法重载的标志。

而方法覆盖一般特指子类重写父类的方法。比如刚刚bird类中的eat()就覆盖了animal中的eat();覆盖体现了子类补充或修改父类方法的能力,通过覆盖,可以使同一个方法在不同子类中表现出不同的行为。

public class Bird extends Animal{public void eat(){System.out.println("鸟吃东西,用啄");//动物都有的方法
  }}public class Dog extends Animal{public void eat(){System.out.println("狗吃东西,用舔");//动物都有的方法
  }}

  同样,在方法覆盖是有几点需要注意:

  1.之类不能覆盖父类中被final和static修饰的方法

  2.子类必须覆盖父类中被abstract修饰的方法,或者也将该方法声明为abstract。

  3.子类覆盖父类同名方法时,必须和父类方法的声明一样。

向上转型:一个类可以看做本类类型,也可以看做是其父类或超类类型。取得一个对象的引用并将它看做是其父类的对象,称为向上转型。

例:Animal animal = new Bird();Animal animal = new Dog();
此时都是向上转型,但是不能写成Bird bird = new Animal();

转载于:https://www.cnblogs.com/buqzl/p/8584126.html

Java——面向对象三大特性学习笔记相关推荐

  1. 夯实Java基础系列1:Java面向对象三大特性(基础篇)

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  2. 【职坐标】java面向对象三大特性(二)——继承详解

    [职坐标]java面向对象三大特性(二)--继承详解 a) 什么是继承? i. 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可 b) ...

  3. java 面向对象三大特性之继承 万字详解(超详细)

    目录 前言 : 一.为什么需要继承: 二.什么是继承(Warning : 篇幅较长)? 1.继承概述: 2.子类继承父类之后达到的效果 : ①如何使用继承? ②代码演示 : 3.继承的使用场景: eg ...

  4. java 面向对象三大特性之多态 万字详解(超详细)

    目录 前言 : 一.为什么需要多态 : 1.白璧微瑕 : 2.举栗(请甘雨,刻晴,钟离吃饭): 3.代码 : 4.问题 : 二.什么是多态 : 1.定义 : 2.多态的实现步骤(重要) : 三.多态的 ...

  5. java 面向对象多态_乐字节Java面向对象三大特性以及Java多态

    ​ 以上就是本次学习的6大任务.我们依次来看. 1 Object类 Object类是所有Java类的根基类. 如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类. cla ...

  6. Java面向对象三大特性(封装、继承、多态)

    文章目录 前言 一.封装 1. 封装的概念 2. private实现封装 3. getter和setter方法 4.封装的好处 二.继承 1. 继承的概念 2. extends实现继承 3. supe ...

  7. java面向对象三大特性难吗_JAVA面向对象的三大特性

    JAVA面向对象的三大特性 每一对象是其状态和行为的封装.类是按一定体系和层次安排的,使得子类可以从超类继承行为.在这个类层次体系中有一个根类,它是具有一般行为的类.Java程序是用类来组织的.下面是 ...

  8. java面向对象三大特性理解

    面向对象主要由三大特性: 封装 继承 多态 一.封装定义: 编写一个类就是对数据和数据的操作封装,封装即时隐藏一切可隐藏的东西,只向外界提供最简单的编程接口.(简单的来说在Java中一个文件包下的类文 ...

  9. Java面向对象三大特性详解

    一.封装 1.概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问. 2.好处: 只能通过规定的方法访问数据. 隐藏类的实例细节,方便修改和实 ...

  10. 深入理解Java面向对象三大特性 封装 继承 多态

    1.封装 封装的定义: 首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系 为什么需要封装: 封装符合面向对象设计原则的第一条:单一性原则,一个类 ...

最新文章

  1. 整个领域没了!学术界有史以来最大的丑闻
  2. linux的pthread.h
  3. asp.net textbox 控件如何清除缓存
  4. Java Web 之Token+Cookie+Session
  5. 尚学堂java 答案解析 第六章
  6. Python初学16——程序设计方法学
  7. mathcad15安装方法(解决了认证错误问题)
  8. 基于simulink的模糊PID控制器设计与仿真
  9. android 停止服务方法,Android编程实现开始及停止service的方法
  10. 双十一自动领喵币工具
  11. 力扣121题 “买卖股票的最 佳时机”
  12. 对 Windows 官方文档的一点吐槽
  13. 生产实践中的经典算法(四)-BitMap
  14. 1. 用户行为采集平台概述
  15. mysql case when用法
  16. django连接sqlserver的一些坑
  17. Kettle邮件发送
  18. iphone长截图哪个软件好_这可能是 iPhone 手机里最好用的长截图、拼图 APP。
  19. java 匿名内部类存储泛型参数,即类型参数
  20. vnc viewer中文版,3步下载vnc viewer中文版

热门文章

  1. Android系统的开机画面显示过程分析(12)
  2. Silverlight实用窍门系列:50.InkPresenter涂鸦板的基本使用,以及将效果保存为Png图片【附带源码实例】...
  3. openfire无法启动
  4. awl 多线程syn***
  5. Linux双网卡下的网络故障排查
  6. 移动端webview canvas bug
  7. 离职因多写3个字被索赔2.9万,这家公司的操作让网友直呼拳头摁了......
  8. 面试官:CountDownLatch 与 CyclicBarrier 的使用场景?有什么区别?
  9. 我的天!你竟然没有在SpringBoot中使用过异步请求和异步调用...
  10. 实际生产中,微服务用 Spring Cloud 多还是 Dubbo 多?