Java的三个特征:①封装        ②继承        ③多态

  • 封装(Encapsulation)是面向对象的基本特征之一。为实现封装有两个步骤:其一是将成员变量私有化,目的是为了将不能暴露的成员隐藏起来,在定义成员之前添加修饰符private;其二是将成员方法定义为公共的,目的是为了用公共方法来暴露对隐藏成员的访问,在定义成员变量时给函数添加上修饰符public。

代码演示:

//首先创建一个Person类
public class Person  {private String name;  // private  私有方法修饰变量,把变量封装起来private int age;//其次构造有参数和无参数方法public Person() {     //无参构造方法}public Person(String name, int age) {    //有参构造方法this.name = name;this.age = age;}
    public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {        //最后重写toString方法return "Person{" +"name='" + name + '\'' +", age=" + age +'}";}
}
  • 注意事项:

  1. 私有成员只能在定义它的类的内部被访问,在类的外部不能被访问。
  2. 在通常情况下,可以将成员变量定义为private,通过public函数(方法)对其进行访问。如果要给一个成员赋值,可以使用setter函数;如果想要获得该出量的值,可以使用getter函数。
  3. private和public都是访问区分符。
  • 继承(Inheritance)它是是面向对象的重要特征,其中继承分为单继承和多重继承。单继承是指一个子类最多只能有一个父类;而多继承是一个子类可以有二个以上的父类。

  • 在Java中,被继承的类成为父类、基类或者超类子类可以直接访问父类中的非私有的属性和行为。

  • 继承是通过 extends 关键字让类与类之间产生继承关系,格式如下:
class 子类 extends 父类{代码段;
}

继承的特点:

1.Java只支持单继承,不支持多继承。

//一个类只能有一个父类,不可以有多个父类。
class 子类 extends 父类{}     //正确写法
class 子类 extends 父类1,父类2,父类3...//错误写法

2.Java支持多层(重)继承(继承体系)。

class A{}
class B extends A{}
class C extends B{}

super和this有什么区别

  1. super是一个关键字,代表父类的存储空间标识。
  2. super和this的用法相似
  • this代表对象的引用。
  • super代表当前子类父类的引用。

运用

  1. 当子父类出现同名成员时,可以用super进行区分。
  2. 子类要调用父类构造函数时,可以使用super语句。

多态(Polymorphism)是面向对象的基本特征之一,也是软件工程的重要思想。多态具有表现多种形态的能力的特征,向同一父类的不同子类对象发送同一条消息,行为不同。

多态可以分为静态多态和动态多态。另其中函数的重载是多态的一种,可称为静态多态

动态多态的理论基础是父类引用可以指向子类对象,代码演示如下:

package chenf;
class Dialog{public void show() {System.out.println("Dialog.show");}
}
class FontDialog extends Dialog{public void show() {System.out.println("FontDialog.show");}
}
public class Main {public static void main(String[] args) {Dialog cf=new FontDialog();      //父类引用指向子类对象。cf.show();}}

注:show函数在父类和子类中都存在,其中,如果在子类中没有show函数,则会调用父类的show函数;如果父类中没有show函数,代码则会报错!

多态创建对象:

1.有继承关系

2.有方法的重写

3.父类引用指向子类对象(父像子)(允许将子类类型的指针赋值给父类类型指针)

使用多态:

1.函数传入的形参可以是父类类型,而实际传入的可以是子类对象

......
public class Main{public static void toCenter(Dialog cf){cf.show;}public static void main(String[] args){FontDialog cf=new FontDialog();toCenter(cf);   //形参是父类,实参是子类,每个子类都可以被这个函数操作}}
  • 2.函数的返回类型是父类类型,而实际返回的可以是子类对象
......
public class Main{public static Dialog fun(){return FontDialog();}public static void main(String[] args){Dialog dialog=fun();dialog.show();}}

父类和子类对象的类型转换

  1. 根据多态性,子类对象无需转换就可以赋值给父类引用
  2. 严格来讲父类类型对象是无法转换为子类类型的
Dialog dialog=new Dialog();FontDialog cf=dialog;错误

但是有一种特殊情况,如果父类类型对象原来就是某一种子类类型对象,则可以转换为相应的子类类型对象,只需强制转换即可

Dialog dialog=new FontDialog();FontDialog fd=(FontDialog)dialog;正确

但是有一种特殊情况,如果父类类型对象原来就是某一种子类类型对象,则可以转换为相应的子类类型对象,只需强制转换即可

Dialog dialog=new FontDialog();FontDialog cf=(FontDialog)dialog;正确

最后可以用instanceof 函数判断是否是某一类型;格式“对象名 instanceof 类名”,其中正确返回true,错误则返回false。

新手小花在此小露一手,望各位大佬不喜勿喷,不吝赐教,点赞鼓励~

学习JAVA面向对象——JAVA的三个特征相关推荐

  1. 三、Java面向对象编程有四个特征

    面向对象编程有四个特征:抽象,封装,继承,多态. 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者 对象操作,对不可信的进行信息隐藏. 继承是指使用现有类的所有功能, ...

  2. java面向对象程序设计第三版_JAVA面向对象程序设计之创建型设计模式

    [本文详细介绍了JAVA面向对象程序设计中的创建型设计模式,欢迎读者朋友们阅读.转发和收藏!] 1 基本概念 1.1 什么是设计模式 设计模式( Design pattern )是一套被反复使用.多数 ...

  3. java面向对象程序设计第三版耿祥义pdf_java基础知识干货——封装

    很多java初学者,在学到Java面向对象方面的知识点的时候,会觉得这块的知识点真的蛮绕的,一个知识点一个知识点的往外冒,对于初学者来说区分构造器和方法就花费了一整天的时间.现在小编带大家重新过一遍知 ...

  4. Java 面向对象编程(三)——多态,方法重写,向上转型,向下转型

    所谓多态,就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪 ...

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

    实验题目 1.在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能. 2.下载搭档实验二的Complex代 ...

  6. 【Java面向对象编程——喂养三种宠物】

    文章目录 (一)编程实现 1.创建动物类 2.继承动物类,创建猫类 3.继承动物类,创建狗类 4.继承动物类,创建鸟类 5.创建学生类 6.创建测试学生类 7.运行程序,查看结果 (二)知识点讲解 动 ...

  7. python面向对象程序设计的三个特征_哪些是面向对象程序设计的三大特征

    展开全部 封装性.继承性.多态性. 1.封装性: 具备封装性(Encapsulation)的面向对象编程隐藏了某一方62616964757a686964616fe78988e69d8331333433 ...

  8. Educoder -Java面向对象-Java语言之数组(第1关:数组的遍历:给小朋友分糖果)

    package step1;import java.util.Scanner;public class CandyDelivery {public static void main(String[] ...

  9. java面向对象设计_Java面向对象设计

    全屏 本教程将通过示例了解Java中面向对象(OOP)的概念.讨论面向对象编程的特性,以及编写面向对象程序包括创建类,并从这些类创建对象,以及创建应用程序,这些应用程序是使用这些对象的独立可执行程序. ...

最新文章

  1. [持续更新][小工具]计算器
  2. 第一章——数据结构之绪论
  3. 中间表增加额外字段_如何定制分表中间件
  4. 2.1.1 进位计数制及其相互转换(二进制转八进制和十六进制、十进制小数转二进制数)
  5. MySQL中的多表插入更新与MS-SQL的对比
  6. c语言程序中必不可少的,C语言程序设计(第3章程序控制语句)2
  7. 剑指offer——10.斐波那契数列
  8. python为什么叫爬虫-可以写爬虫的那么多,为什么只有python火了?
  9. 2021年下半年 全国计算机技术与软件专业技术资格考试 浙江省合格人员数据分布
  10. fcq java_Java设计模式百例 - 解释器模式
  11. java ArrayList集合
  12. dnn神经网络_卷积神经网络(五):总结
  13. Python抽象类(abc模块)
  14. Android重力感应实现方式简介
  15. 《机器人学导论》约翰 第二章
  16. linux内网劫持教程,利用kali进行dns劫持入侵局域网
  17. 支付宝小程序悬浮按钮
  18. 移动端图片剪裁工具cropperjs
  19. 损失函数(Loss)
  20. DataOps、MLOps 和 AIOps,你要的是哪个Ops?

热门文章

  1. 一款可以在苹果电脑MAC OS平台上使用的帮助用户编辑文档的Mac BT搜索软件
  2. react移动端适配
  3. java程序员推荐轻薄笔记本,移动架构师成长路线
  4. 学计算机可以买轻薄本吗,2021大学生买电脑,容易犯的七种错误!游戏本和轻薄本买哪个?...
  5. 【微信小程序】 通过用户登录实现批量收集formId
  6. ubuntu 下 gvim的字符间距设置
  7. [Unity官方直播] 详解Unity Asset的一生——学习笔记(一)
  8. Redis高可用--持久化
  9. 转:笔记本电脑开机密码忘记的解决方法
  10. 解决:FTP协议路径在资源管理器打开,总是默认跳转到某个浏览器打开