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

Java面向对象笔记

多态

一种类型的变量可以引用多种实际类型的对象

package ooplearn;public class Test {public static void main(String[] args) {Animal[] animals = new Animal[2];animals[0] = new Dog();animals[1] = new Cat();for (Animal animal : animals){animal.eat();}}
}class Animal {public void eat() {System.out.println("Animal eat");}
}class Dog extends Animal{public void eat(){System.out.println("Dog eat");}
}class Cat extends Animal{public void eat(){System.out.println("Cat eat");}
}

Animal类型的变量animal可以引用Dog和Cat类型对象,称为多态。Animal就是animal变量的静态类型,Dog和Cat就是animal变量的动态类型。animal.eat()调用的是变量动态类型的方法,称为动态绑定

静态绑定

package ooplearn;public class Test {public static void main(String[] args) {Dog d = new Dog();Animal a = d;System.out.println(d.title); // return DogSystem.out.println(a.title); // return Animal}
}
class Animal {public static String title = "Animal";
}class Dog extends Animal{public static String title = "Dog";
}

变量d的静态类型是Dog,访问Dog变量和方法,变量a的静态类型是Animal,访问Animal的变量和方法。访问绑定到变量的静态类型,称静态绑定

实例方法调用顺序

package ooplearn;public class Test {public static void main(String[] args) {Animal[] animals = new Animal[2];animals[0] = new Dog();animals[1] = new Cat();for (Animal animal : animals){animal.eat();}}
}class Animal {public void eat() {System.out.println("Animal eat");}
}class Dog extends Animal{public void eat(){System.out.println("Dog eat");}
}
class Cat extends Animal{
}

上述代码返回

Dog eat
Animal eat

循环输出的过程animal变量的实际类型分别为Dog和Cat,先从实际类型找方法,找不到就去父类找。

内部类

定义在类里的类称为内部类,一般与外部类(包含内部类的类)关系密切,与其他类关系不大。一般对外隐藏,有更好的封装性。如Swing编程中为组件创建ActionListener:


import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;public class TwoButtons {JFrame frame;JLabel label;public static void main(String[] args) {TwoButtons gui = new TwoButtons();gui.go();}public void go() {frame = new JFrame();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);JButton labelButton = new JButton("Change Label");labelButton.addActionListener(new LabelListener());JButton colorButton = new JButton("Change Circle");colorButton.addActionListener(new ColorListener());label = new JLabel("I'm a label");MyDrawPanel drawPanel = new MyDrawPanel();}class LabelListener implements ActionListener {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stublabel.setText("Ouch!");}}class ColorListener implements ActionListener {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubframe.repaint();}}
}

权限修饰符

修饰本类本包其他包子类其他包
privateYNNN
不写YYNN
protectedYYYN
publicYYYY

private修饰部分只能在本类中使用;缺省状态下,可见性上升到当前包内,即在同一个包内的地方可以使用;protected范围还包括本包之外其他包属于自己子类的部分;public没限制。

导图

在这里插入图片描述

相关文章:

Java面向对象笔记

多态 一种类型的变量可以引用多种实际类型的对象 如 package ooplearn;public class Test {public static void main(String[] args) {Animal[] animals new Animal[2];animals[0] new Dog();animals[1] new Cat();for (Animal animal : animals){animal.eat();}} }class …...

如何通过PHP语言实现远程控制多路照明

如何通过PHP语言实现远程控制多路照明呢? 本文描述了使用PHP语言调用HTTP接口,实现控制多路照明,通过多路控制器,可独立远程控制多路照明。 可选用产品:可根据实际场景需求,选择对应的规格 序号设备名称厂…...

Capture One Pro 23:专业 Raw 图像处理的卓越之选

在当今的数字摄影时代,拥有一款强大的图像处理软件至关重要。而 Capture One Pro 23 for Mac/Win 无疑是其中的佼佼者,为摄影师和图像爱好者带来了前所未有的体验。 Capture One Pro 23 以其出色的 Raw 图像处理能力而闻名。它能够精准地解析和处理各种…...

【主题广泛|投稿优惠】2024年交通运输与信息科学国际会议(ICTIS 2024)

2024年交通运输与信息科学国际会议(ICTIS 2024) 2024 International Conference on Transportation and Information Science 【重要信息】 大会地点:青岛 大会官网:http://www.icictis.com 投稿邮箱:icictissub-conf.…...

表格误删数据保存关闭后如何恢复?5个恢复方法大公开!

“我在编辑表格的时候一不小心就删除了部分数据,现在真的不知道该怎么操作了。希望大家能帮帮我吧!” 在日常工作中,我们经常会使用到各种表格软件来处理和分析数据。然而,有时由于操作失误或其他原因,我们可能会误删表…...

Go 语言中的切片:灵活的数据结构

切片(slice)是 Go 语言中一种非常重要且灵活的数据结构,它提供了对数组子序列的动态窗口。这使得切片在 Go 中的使用非常频繁,特别是在处理动态数据集时。本文将探讨切片的概念、操作和与函数的交互,以及如何有效地使用…...

在鲲鹏服务器搭建k8s高可用集群分享

高可用架构 本文采用kubeadm方式搭建k8s高可用集群,k8s高可用集群主要是对apiserver、etcd、controller-manager、scheduler做的高可用;高可用形式只要是为: 1. apiserver利用haproxykeepalived做的负载,多apiserver节点同时工作…...

MySQL之数据库事务机制学习笔记(五)

事务机制 事务(Transaction)是数据库管理系统中的一个重要概念,它是一组数据库操作的逻辑单元,要么全部执行成功,要么全部执行失败,具有以下四个特性,通常缩写为 ACID: 原子性&…...

linux 系统被异地登录,cpu占用拉满100%

一般是kswapd0导致的cpu占用异常 按顺序执行以下操作 在控制台执行top命令,查看占用最高的是否kswapd0。基本100%占用。记下该进程ID 5081 执行查找命令 find / -name kswapd0 显示查找结果: /proc/3316/.X2c4-unix/.rsync/a/kswapd0 /root/.configrc…...

智慧校园应用平台的全面建设

在当今社会,随着科技的不断进步,智慧校园应用平台逐渐成为学校管理的必备工具。在实现智慧校园全面建设的过程中,学校需要运用先进的技术和创新的理念,为教育提供更好的服务和支持。这篇文章将为您介绍智慧校园应用平台的全面建设…...

图论第6天

提高效率!!!两道题看并查集 841.钥匙和房间 忘了把visited 加引用了&#xff1a;& class Solution { public:bool canVisitAllRooms(vector<vector<int>>& rooms) {vector<int>visited(rooms.size(),false);dfs(rooms,visited,0);for(int i 0;i …...

Redis教程(二十一):Redis怎么保证缓存一致性

传送门:Redis教程汇总篇,让你从入门到精通 Redis 的缓存一致性 Redis 的缓存一致性是指在使用 Redis 作为缓存层时,保证缓存中的数据与数据库中的数据保持一致的状态。在分布式系统中,数据一致性是一个重要的问题,因为可能存在多个客户端同时读写同一数据,或者数据在不同…...

android apk签名

android apk签名 命令&#xff1a; java -jar signapk.jar platform.x509.pem platform.pk8 **.apk ***.apk note&#xff1a; apk密钥为&#xff1a; platform.pk8和platform.x509.pem 路径&#xff1a; build\target\product\security apk签名工具&#xff1a;sign…...

flutter 解析json另类封装方式 List<bean>,哈哈哈

flutter 解析json另类封装方式&#xff0c;哈哈哈 日常学习&#xff0c;仅供参考&#xff0c;不喜 勿喷 http请求数据泛型解析封装&#xff0c;需要判断泛型数据类型再根据类型解析&#xff0c;本文只抽取了list演示 核心代码 import dart:convert;import package:webwsyn/h…...

哈希表(Hash table)

哈希表(Hash table),也称为散列表,是一种根据关键码值(Key value)直接进行访问的数据结构。它通过散列函数(Hash function)将关键码值映射到表中的一个位置,以此来访问记录,从而加快查找的速度。以下是关于哈希表的详细解释: 基本概念 散列函数:将关键码值映射到表…...

【c语言】自定义类型-结构体

结构体 结构体的声明与使用结构体的声明与初始化结构体的自引用 结构体的内存对齐对齐规则为什么存在内存对齐修改默认对齐数 结构体的传参结构体实现位段什么是位段位段的内存分配位段的跨平台问题位段使用的注意事项 结构体&#xff1a;是一个自定义的类型&#xff0c;成员可…...

2-链表-71-环形链表 II-LeetCode142

2-链表-71-环形链表 II-LeetCode142 参考&#xff1a;代码随想录 LeetCode: 题目序号142 更多内容欢迎关注我&#xff08;持续更新中&#xff0c;欢迎Star✨&#xff09; Github&#xff1a;CodeZeng1998/Java-Developer-Work-Note 技术公众号&#xff1a;CodeZeng1998&#…...

【UnityShader入门精要学习笔记】第十七章 表面着色器

本系列为作者学习UnityShader入门精要而作的笔记&#xff0c;内容将包括&#xff1a; 书本中句子照抄 个人批注项目源码一堆新手会犯的错误潜在的太监断更&#xff0c;有始无终 我的GitHub仓库 总之适用于同样开始学习Shader的同学们进行有取舍的参考。 文章目录 表面着色器…...

Python社会经济 | 怀特的异方差一致估计量

&#x1f3af;要点 &#x1f3af;算法​和模型底层数学及代码&#xff1a;&#x1f58a;线性代数应用&#xff08;主成分分析&#xff09;&#xff1a;降维、投影&#xff08;用于求解线性系统&#xff09;和二次形式&#xff08;用于优化&#xff09;| &#x1f58a;奇值分解…...

《被讨厌的勇气》笔记

自由就是被别人讨厌。对人而言&#xff0c;最大的不幸就是不喜欢自己。活在“如果怎样怎样”之类的假设之中&#xff0c;就根本无法改变。活在害怕关系破裂的恐惧之中&#xff0c;那是为他人而活的一种不自由的生活方式。人生是连续刹那&#xff0c;我们只能活在“此时此刻”。…...

Python爬虫协程批量下载图片

import aiofiles import aiohttp import asyncio import requests from lxml import etree from aiohttp import TCPConnectorclass Spider:def __init__(self, value):# 起始urlself.start_url value# 下载单个图片staticmethodasync def download_one(url):name url[0].spl…...

Flask Web开发基础:数据库与ORM实战

Flask Web开发基础&#xff1a;数据库与ORM实战 该文介绍了如何使用 Flask、SQLAlchemy 和 SQLite 实现数据库操作。首先&#xff0c;通过创建虚拟环境和安装 flask-sqlalchemy&#xff08;版本2.5.1&#xff09;及 sqlalchemy&#xff08;版本1.4.47&#xff09;来设置环境。接…...

pidstat -d 1分析磁盘吞吐量

iostat -dx 1 查看磁盘IO吞吐量 pidstat -d 1看是哪个进程写的...

期望20K,2年golang深圳某互联网小公司一面

后续约了二面&#xff08;CTO面&#xff09;&#xff0c;需要到现场&#xff0c;基本没问啥具体的技术知识&#xff0c;都是聊规划和个人职业目标 一面 1、假设访问百度网站&#xff0c;从在浏览器输入网址&#xff0c;到最终页面展示出来&#xff0c;中间会发生哪些事情&…...

#02 安装指南:如何配置Stable Diffusion环境

文章目录 前言前置条件第1步&#xff1a;安装Python和PIP第2步&#xff1a;创建虚拟环境第3步&#xff1a;安装PyTorch和CUDA第4步&#xff1a;安装Stable Diffusion相关库第5步&#xff1a;测试环境结论 前言 在之前的文章中&#xff0c;我们介绍了Stable Diffusion基础入门和…...

拼多多笔试

拼多多2022数据分析笔试&#xff08;0822&#xff09; 一、选择题 1.已知样本量n&#xff0c;样本均值及方差求置信区间 2.决策树 3.峰度系数 4.协方差 5.第一、第二熵变 6.充分统计量 7.xgboost 8.方差分析中的多重比较 二、编程题 1. 一张用户点击路径的表&#x…...

Golang | Leetcode Golang题解之第119题杨辉三角II

题目&#xff1a; 题解&#xff1a; func getRow(rowIndex int) []int {row : make([]int, rowIndex1)row[0] 1for i : 1; i < rowIndex; i {row[i] row[i-1] * (rowIndex - i 1) / i}return row }...

Flutter 中的 SliverIgnorePointer 小部件:全面指南

Flutter 中的 SliverIgnorePointer 小部件&#xff1a;全面指南 Flutter 是一个由 Google 开发的跨平台 UI 框架&#xff0c;它提供了一系列的组件来帮助开发者构建高性能、美观的移动、Web 和桌面应用。在 Flutter 的滚动组件中&#xff0c;SliverIgnorePointer 是一个用来包…...

比较两台计算机上的LabVIEW、工具包及驱动程序的一致性

比较两台计算机上的LabVIEW、工具包及驱动程序是否相同&#xff0c;可以通过以下步骤实现&#xff1a; 1. 检查LabVIEW版本 方法一&#xff1a;在LabVIEW中查看版本信息 步骤&#xff1a; 打开LabVIEW。点击菜单栏的 Help > About LabVIEW。记录显示的LabVIEW版本号和许可…...

参考——温湿度传感器DHT11驱动_STM32

设备&#xff1a;stm32f407ZGT6 环境&#xff1a;FreeRTOS HAL 到网上找DHT11的驱动&#xff0c;但是都无法使用。原因是RTOS环境中&#xff0c;由于多线程&#xff0c;使用循环计数阻塞式的delay_us延时函数就没那么准&#xff0c;且不同设备中delay_us的计数值不一样…...

天津企业免费建站/怎样搭建一个网站

如何编写C语言程序判断一个字符是否是字母或数字怎样判断一个字符是否是一个字母?字母表中的所有字母(包括计算机键盘上的所有键)都被赋予了一个值&#xff0c;这些字符及其相应的值一起组成了ASCII字符集&#xff0c;该字符集在北美、欧洲和许多讲英语的国家中得到了广泛的使…...

wordpress商务套餐/百度地图下载2022新版安装

采用Little-endian模式的CPU对操作数的存放方式是 从低字节到高字节&#xff0c;而Big-endian模式对操作数的存放方式是从高字节到低字节。例如&#xff0c;16bit宽的数0x1234在Little-endian 模式CPU内存中的存放方式&#xff08;假设从地址0x4000开始存放&#xff09;为&…...

工业设计公司经营范围有哪些/长沙关键词优化新行情报价

架构筑基 大家都知道&#xff0c;性能一直是让程序员比较头疼的问题。当系统架构变得复杂而庞大之后&#xff0c;性能方面就会下降&#xff0c;如果想成为一名优秀的架构师&#xff0c;性能优化就是你必须思考的问题。 所以性能优化专题从JVM底层原理到内存优化再到各个中间件…...

沈阳网站网页/阿里巴巴怎么优化关键词排名

讲一下建图过程&#xff0c;首先建立一个超级源点S&#xff0c;对于这个源点&#xff0c;向每个HOUSE连一条有向边&#xff0c;权值为该HOUSE建立WELL的费用&#xff0c;即高度*X。 然后每个可以连边的WELL之间&#xff0c;费用为曼哈顿距离*Y&#xff0c;然后考虑两边的高度&a…...

马鞍山市网站建设公司/新闻早知道

效果图 完整代码和详细注释 代码并不复杂,这里主要是用了 lunar 这个第三方库,具体使用详解,已相应附代码注释 主流程 main.pde import lunar.*;// 噪声种子 LVector offset = new LVector(); LVector direction = new LVector(0.01, 0.01, 0.01);// Timer,用于动画 …...

怎么做时时彩网站代理/百度广告联盟赚广告费

参见&#xff1a;Delphi 中 FireDAC 数据库连接&#xff08;总览&#xff09;描述了如何在不稳定的环境中工作。FireDAC允许一个应用程序从连接失败中恢复。一、概述一个数据库应用程序可以在一个不稳定的环境中工作&#xff0c;网络可能被物理断开或DBMS服务器可能被重新启动。…...