面向对象知识点

news2025/1/14 1:06:27

一.Static

1.static修饰成员变量

被static修饰的成员变量,也叫做类变量,与类一同加载,只加载一次,被当前类的所有对象共享,只有一个
可以通过类名.属性的方法调用,也可以使用对象.属性的方式调用

应用场景:例如统计构造方法创建的对象数量

2.static修饰成员方法

被static修饰的成员方法,也叫做类方法,可以通过类名.方法访问一般用作工具类
作用,提高了代码的复用性,不用创建对象调用方法,节省了内存
类方法在其类中可以直接用方法名调用,类方法中不能出现this关键字

3.静态代码块

作用:完成类的初始化
静态代码块

//类加载时,静态代码块自动加载,执行块中的语法,和类一样,代码块只加载一次
static
{
}

实例代码块

//结构
{
}
在调用构造方法创建对象时(new Object),实例代码块会在构造方法前同步输出,实例化一次,调用一次

4.单例模式

设计模式:针对一个问题的最优解
实现步骤

//饿汉单例,只能有一个类对象,在使用对象时,对象提前创建好了
1.私有化构造方法
2.定义一个类变量对象
3.创建一个类方法,返回当前的对象
public class classname
{
private static ClassName name=new ClassName();
private classname(){}
public static A geyObject()
{
return name;
}
}

//懒汉单例
1.私有构造方法
2.创建一个类变量用于存储对象
3.提供一个类方法,保证返回的是同一个对象
public class classname
{
private static ClassName name;
private classname(){}
public static A geyObject()
	{
		if(name==null)
		{
		name=new ClassName();
		}
		return name;
	}
}

单例模式的好处:只有一个对象,节约内存,如任务管理器,有一个就足够了

二.继承

作用:提高代码的复用性
访问修饰符

1.重写

将父类的方法在子类中重新定义,重写的方法必须和父类的方法同名同参
私有方法和静态方法不能被重写

2.在子类中访问类成员

当子类、父类、局部变量名称一致,遵循就近原则
也可以通过this.属性/方法关键字,调取当前类的属性通过super可以调用父类的属性

3.子类构造器

子类继承了父类后,子类调用构造方法时,同时也会调用父类的构造方法
在这里插入图片描述

三.多态

1.

多态是在继承或者实现情况下的一种现象:对象多态,行为多态
多态的前提
1.有继承或者实现
2.存在父类引用子类对象
3.存在方法的重写

//父类
public class People
{
public void function()
{
System.out.print("这是父类方法中的run")}
}
//子类对象1
public class Student extend People
{
@Override
public void function()
{
System.out.print("这是学生方法中的run")}
}
//子类对象2
public class Teacher extend People
{
@Override
public void function()
{
System.out.print("这是老师方法中的run")}
}
//测试
People p1=new Student();   //对象多态
p1.function()             // 行为多态
People p2=new Teacher();
p2.function();
输出结果
这是学生方法中的run
这是老师方法中的run

多态的好处:
1.实现功能的解耦合
2.可以将父类作为参数,接收一切子类

坏处:
1.不能接收子类自有的方法

解决方法:对象类型强转
在执行强转的时候,需要辨别强转的类型是否是父类和子类的强转,子类间不能强转

类型判断
对象 instanceof 类名,判断当前对象得真实类型

2.Final、常量

//可修饰成员变量(静态成员、实例成员变量)局部变量
//被修饰得变量只能进行一次赋值
//如果是修饰引用数据的话,数据可以改变,但Final指向的地址不变
如:final int [] arr={11,22,33,44}
	arr[1]=20;

常量:被static final修饰的成员变量

三.抽象类

1.定义

抽象类抽象方法:被abstrict修饰的方法或类,抽象类可以没有抽象方法,抽象方法不能有方法体,抽象类不能创建对象

特点
1.抽象类不一定有抽象方法,有抽象方法的一定是抽象类
2.抽象类不能实例化对象,只能被继承
3.一个类继承抽象类,必须重写完抽象类的全部抽象方法,否则这个类也必须定义成抽象类
4.类具有的成员(成员变量,成员方法,构造器),抽象类都可以有

抽象类的目的:更好的支持多态

//案例
父类
public abstract class Animal
{
private String name;

public abstract void cry();//抽象方法

public void getName()
{
return name;
}
public String setName(String name)
{
this.name=name
}
}
子类
public class Cat extends Animals
{
@Override
public void cry()
{
System.out.print(getName+"喵喵叫")
}
}
测试类
Animal animal=new Cat();
animal.setName("cat")
animal.cry();

抽象类的应用场景,父类知道子类的行为,但是每个子类的行为又有所不同,父类就将该行为定义为抽象方法,由子类各自实现重写,更还得支持多态

4.接口

作用
1.解决继承中只能继承一个父类的问题,一个类可以实现多个接口
2.一个接口可以被多个类实现,一个类可以实现多个接口
JDK8版本后,新增的接口定义方法

//默认方法,通过实现类进行调用
default void test1()
{
System.out.print("==默认方法==");
}
//私有方法,在默认方法中调用
private void test2()
{
System.out.print("==私有方法==");
}
//静态方法,接口类名.方法调用,jdk9之后才能用
static void test3()
{
System.out.print("==静态方法==");
}

接口之间可以实现多继承,即一个接口可以继承多个接口,实现类直接对继承多个接口的接口类进行实现即可,就能完成实现多个接口的目标

5.内部类

在一个类中定义一个类
分类
1.成员内部类

//Outer外部类,Inner内部类
`Outer out=new Outer().new Inner()` 创建内部内对象 

在这里插入图片描述
2.静态内部类
在这里插入图片描述

3.局部内部类
4.匿名内部类

//格式
new 类或接口(参数值)
{
类体(一般是方法的重写)
}

特点:匿名内部类本质是一个子类,会立即创建一个子类对象,一般作为方法的参数被调用

6.枚举

在这里插入图片描述
一般用作信息的分类

//枚举类
public enum Constant
{
BOY,GIRL
}
//信息分类的方法
public static void check(Constant sex)
{
	switch(sex)
	{
	case BOY:
	System.out.print("男");
	break;
	case GIRL:
	System.out.print("女");
	break;
	}
}
//main方法
check(Constant.BOY);
#这样的写法可以规范枚举过程,只能传入规定的枚举值

7.泛型

定义类、接口、方法时,同时申明了一个或多个类型变量(如<Student>),称为泛型类,泛型接口,泛型方法,他们统称为泛型

#泛型类
修饰符 class 类名<类型变量,类型变量>
{

}
例如
public class A<R,E>
{} 
A <Cat,String>a =new A<>()
//在调用a对象的方法时,第一个参数只能是Cat,第二个参数只能是String


#泛型接口
//定义一个泛型接口,根据类不同,实现接口的不同方法
 public interface Data<T>
{
	void add(T t);
	ArrayList<T> getByName(String name);
}
//泛型接口中也可以有,Data<T extends Cat>,即泛型对象是Cat的子类或者Cat自己
//泛型接口的实现类
public class StudentData Implements Data<Student> //表示泛型接口中的类为Student对象
{

}
#泛型方法 !!!!!!!重点
public static <T> T test(T t) //<T>就表示这是一个泛型方法,<T> T中的T表示返回值为泛型
{}
//泛型方法的参数限定,下列对泛型进行限定,输入的泛型只能是car或者car的子类
public static <T extends Car> void go(ArrayList<T> cars)
{
}
#在使用系统自己的泛型,非自定义泛型时,如ArrayList<E>,可以这样限定泛型方法
public static void go(ArrayList<? extends Car>)
{
}
//?表示通配符,即所有Car本身以及所有的子类

泛型只能接收类对象,不能传基本数据
ArrayList<Integer> a=new ArrayList<>() ✔
ArrayList<int> a=new ArrayList<>() x

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/922530.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

备份集中的数据库备份与现有的数据库不同?

数据已经成为公司的主要资产,特别是对于企业来说&#xff0c;数据库中存储的信息通常是其业务运营的核心。 因此&#xff0c;确保数据库的安全性和完整性至关重要。这导致数据库备份成为企业信息管理的重要组成部分。本文将详细介绍备份密集数据库备份的必要性&#xff0c;以及…

【python】Leetcode(primer-pointer)

文章目录 26. 删除有序数组中的重复项&#xff08;快慢指针&#xff09;88. 合并两个有序数组&#xff08;双指针&#xff09;167. 两数之和 II - 输入有序数组&#xff08;双指针&#xff09; 更多 leetcode 题解可参考&#xff1a;【Programming】 26. 删除有序数组中的重复项…

【linux内核】DP83867添加GMII模式支持

文章目录 修改方案前期知识为什么这么修改&#xff1f;通用寄存器 修改方案 linux 4.0内核下/drivers/net/phy/dp83867.c phy_write_mmd(phydev, DP83867_DEVADDR, DP83867_CFG4, val);} if (phydev->interface PHY_INTERFACE_MODE_GMII){val phy_read_mmd(phydev, DP838…

CLIP(Contrastive Language-Image Pre-training)

《Learning Transferable Visual Models From Natural Language Supervision》 从自然语言监督中学习可迁移的视觉模型 贡献:利用自然语言信号监督,打破了固定类别的范式。 方法简单,效果好。从文本中得到监督信号,引导视觉分类的任务。 它是一个 zero-shot 的视觉分类…

深度研究:ASEMI快恢复二极管APT60DQ20BG

编辑-Z 在众多电子元件中&#xff0c;快恢复二极管APT60DQ20BG因其独特属性和广泛应用&#xff0c;吸引了广大电子爱好者和工程师的目光。本文将为您进行全面、深入的剖析。 首先&#xff0c;我们需要理解APT60DQ20BG是什么。APT60DQ20BG是一种快恢复二极管。二极管作为一个电…

【MySQL系列】Select语句单表查询详解(一)

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

搭建AI智能问答的这些前期工作可不要忘了

在搭建AI智能问答之前&#xff0c;我们需要做好相应的前期准备工作&#xff0c;不能盲目地去搭建模型。这样很容易导致我们模型后续的不完整性。所以looklook今天就基于搭建AI智能问答最基础的思路&#xff0c;带领大家一起去理顺一下我们需要做什么前期工作才能保证AI智能问答…

【数据结构】C语言实现栈(详细解读)

前言: &#x1f4a5;&#x1f388;个人主页:​​​​​​Dream_Chaser&#xff5e; &#x1f388;&#x1f4a5; ✨✨专栏:http://t.csdn.cn/oXkBa ⛳⛳本篇内容:c语言数据结构--C语言实现栈 目录 什么是栈 栈的概念及结构 实现栈的方式 链表的优缺点: 顺序表的优缺点: 栈…

使用端口映射实现Spring Boot服务端接口的公网远程调试:详细配置与步骤解析

文章目录 前言1. 本地环境搭建1.1 环境参数1.2 搭建springboot服务项目 2. 内网穿透2.1 安装配置cpolar内网穿透2.1.1 windows系统2.1.2 linux系统 2.2 创建隧道映射本地端口2.3 测试公网地址 3. 固定公网地址3.1 保留一个二级子域名3.2 配置二级子域名3.2 测试使用固定公网地址…

【每日一招小技巧】编译安装提升系统自带的java版本

hello&#xff0c;大家好&#xff0c;又到了每日一招的环节&#xff0c;今天要给大家介绍的是&#xff0c;如何用源码安装的方式&#xff0c;升级系统自带的ava版本&#xff01; 首先&#xff0c;我们要查看一下我们系统自带的java版本是多少&#xff0c;怎么查看呢&#xff1…

『PyQt5-基础篇』| 02 Pyqt5开发环境+安装配置QtDesigner

02 Pyqt5开发环境安装配置QtDesigner 1 Pycharm安装2 Python安装3 Pip安装4 PyQt5安装5 Pycharm中编译工具设置及pyqt5包的导入6 指定Qt Designer7 指定PyUIC58 指定PyRcc59 PyInstaller安装10 查看是否配置OK 1 Pycharm安装 安装教程请参考&#xff1a;安装教程 2 Python安装…

Linux Day11---mbash项目(二)

观看本文之前请先阅读Linux Day10的相关内容 1.touch 1.1 open系统调用 int open(const char*path,int oflags,mode_t mode); oflags参数&#xff1a; O_APPEND:把写入数据追加在文件的末尾 O_TRUNC:把文件长度设置为0&#xff0c;丢弃已有的内容 O_CREAT:如果需要&#…

Oracle数据库sqlplus命令行执行sql语句时,语句有中文报错解决

在Oracle数据库sqlplus命令行执行sql语句时&#xff0c;语句有中文报错解决 -- 建表语句 create table T_ADEV_SCLG_YXDXMB (obj_id VARCHAR2(42) not null,xmmc VARCHAR2(400),xmbh VARCHAR2(100),jhnd INTEGER,gsmc VARCHAR2(50),xmssdwmc VARCHAR2…

如何从用户视角搭建可观测体系?阿里云ECS业务团队的设计思路

一分钟精华速览 互联网平台以业务为中心&#xff0c;以用户为中心&#xff0c;平台的功能服务、质量和用户体验等是关键的目标&#xff0c;仅仅关注后台系统的可用性是不够的&#xff0c;以传统运维的视角来解决故障、做监控会比较被动。 本文以阿里云 ECS 业务为例&#xff…

医院设备电力中断?如何改善UPS系统?教你一招

当今医疗体系紧密依赖于电力供应的稳定性&#xff0c;以保障医疗设备的正常运行和患者的安全。然而&#xff0c;电力中断或波动可能会带来严重的风险&#xff0c;因此&#xff0c;不间断电源&#xff08;UPS&#xff09;系统在医院中扮演着至关重要的角色。 为确保UPS系统的高效…

Java在项目中覆盖Jar包中的类

import cn.hutool.core.util.StrUtil;public class CoverJarTest {public static void main(String[] args) {System.out.println(StrUtil.toString("1"));} }输出1 我们将hutool的包名在我们的项目中创建一个&#xff0c;并且将对应类的源码复制一份过来&#xff0c…

Echarts图表坐标轴文字太长,省略显示,鼠标放上显示全部(vue)

注意&#xff1a;记得加上这个&#xff0c;触发事件&#xff0c; triggerEvent: true,重点&#xff1a;下面就是处理函数&#xff0c;在实例化图表的时候使用&#xff0c;传入参数是echarts的实例 // 渲染echartsfirstBarChart() {const that thislet columnar echarts.init…

Typecho博客搭建 实现公网访问内网站点

文章目录 前言1. 环境安装2.安装Typecho3.安装cpolar内网穿透4. 固定公网地址5.配置Typecho 前言 Typecho是一款PHP语言编写的开源博客程序&#xff0c;它是一个轻量级的内容管理系统&#xff0c;专注于博客领域。支持多用户、多站点、多语言等功能&#xff0c;可以满足不同用…

多模态(文本、图片)数据融合模型(含公开数据集、文献及开源代码汇总)

多模态&#xff08;文本、图片&#xff09;数据融合模型&#xff08;含公开数据集、文献及开源代码汇总&#xff09; <center>多模态模型的应用跑代码普遍存在的问题 <center>多模态公开数据集<center>文献及开源代码 多模态模型的应用 多模态模型的应用按照…

zabbix3.4配置客户端

1.安装agent yum -y install zabbix zabbix-agent如果下载不动或者无外网环境请看 https://download.csdn.net/download/qq_45748758/88228235?spm1001.2014.3001.5501 免费自取 2、配置zabbix-agent&#xff0c;修改图片三个参数 vi /etc/zabbix/zabbix_agentd.conf3、启动…