当前位置: 首页 > news >正文

java封装继承多态详解

1.封装

所谓封装,就是将客观事物封装成抽象的类,并且类可以把数据和方法让可信的类或者对象进行操作,对不可信的类或者对象进行隐藏。类就是封装数据和操作这些数据代码的逻辑实体。在一个类的内部,某些属性和方法是私有的,不能被外界所访问。通过这种方式,对象对内部数据进行了不同级别的访问控制(public,protected,private),就避免了程序中的无关部分的意外改变或错误改变了对象的私有部分。

2.继承

提高了代码的复用,继承有这样一种能力,就是使用现有的类的所有功能,还可以在父类的基础上进行扩展功能(重写或者实现新的方法)。通过继承创建的新类称为子类或派生类,被继承的称为基类。继承有两种,一种是实现继承,另外一种是接口继承。实现继承可以直接使用基类的属性和方法而无需额外编码,接口继承是指使用属性和方法的名称,但是基类必须提供实现的能力。

3.多态

  • Java作为面向对象的语言,同样可以描述一个事物的多种形态。如Student类继承了Person类,一个Student的对象便既是Student,又是Person。

  • 多态是同一个行为具有多个不同表现形式或形态的能力。

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

代码示例一:

package test1;import java.util.*;public class Test2 {public static void main(String[] args) {List<Integer> list1 = new ArrayList<>();List<Integer> list2 = new LinkedList<>();list1.add(1);list2.add(1);}
}

别看都使用add,但是不一样。

list1的add方法(得去看arraylist怎么实现的add):

list2的add方法(得去看linkedlist怎么实现的add):

 

 

代码示例二:

package test1;public class demo04 {public static void main(String[] args) {People p = new Stu();p.eat();//调用特有的方法Stu s = (Stu) p;s.study();
//        ((Stu) p).study();}
}class People {public void eat() {System.out.println("吃饭");}
}class Stu extends People {@Overridepublic void eat() {System.out.println("吃水煮肉片");}public void study() {System.out.println("好好学习");}
}class Teachers extends People {@Overridepublic void eat() {System.out.println("吃樱桃");}public void teach() {System.out.println("认真授课");}
}

 

4.多态的转型  
多态的转型分为向上转型和向下转型两种

向上转型:多态本身就是向上转型过的过程

  • 使用格式:父类类型 变量名=new 子类类型();
  • 适用场景:当不需要面对子类类型时,通过提高扩展性,或者使用父类的功能就能完成相应的操作。

向下转型:一个已经向上转型的子类对象可以使用强制类型转换的格式,将父类引用类型转为子类引用各类型

  • 使用格式:子类类型 变量名=(子类类型) 父类类型的变量;
  • 适用场景:当要使用子类特有功能时。
     

 

http://www.lryc.cn/news/28616.html

相关文章:

  • 【uni-app教程】UniAPP 常用组件和 常用 API 简介# 知心姐姐聊天案例
  • 阿尔法开发板 .bin 文件烧写
  • Ceres-Solver 安装与卸载ubuntu20.04
  • 汇编系列02-借助操作系统输出Hello World
  • 【2023unity游戏制作-mango的冒险】-前六章API,细节,BUG总结小结
  • 进程控制及其操作
  • Git常用命令复习笔记
  • 代码随想录算法训练营day49 | 动态规划 123.买卖股票的最佳时机III 188.买卖股票的最佳时机IV
  • 【教学典型案例】14.课程推送页面整理-增加定时功能
  • 【算法基础】DFS BFS 进阶训练
  • GO语言中的回调函数
  • 28个案例问题分析---014课程推送页面逻辑整理--vue
  • 佛科院单片机原理2——80C51单片机结构
  • 数据结构与算法_动态顺序表
  • 逃避浏览器JS检测打开开发者工具
  • ceph介绍、原理、架构、算法...个人学习记录
  • Spring MVC源码解析——HandlerMapping(处理器映射器)
  • 【Word/word2007】将标题第1章改成第一章
  • NLP预训练模型
  • Typora上传文档图片链接失效的问题+PicGo布置图床在Github
  • win10安装oracle
  • AQS为什么用双向链表?
  • AtCoder Beginner Contest 292——A-E题讲解
  • (蓝桥真题)最长不下降子序列(权值线段树)
  • 数据类型及参数传递
  • 永春堂1300系统开发|解析永春堂1300模式商城的五大奖项
  • 最近一年我都干了什么——反思!!
  • Docker学习(十七)save 和 export 命令的区别
  • 【数据结构初阶】详解“树”
  • 20230304 CF855 div3 vp