java基础


一、接口和抽象类的区别

1. 接口定义:接口,在Java编程语言中是一个抽象类型/概念,主要是抽象方法的集合,接口中的变量定义必须为**public static final**类型,接口通常以interface来声明。
2. 抽象类定义:从面向对象的角度来讲,我们知道的所有的对象都是通过类来描绘的,但是反过来却不是这样,并不是所有的类都是用来描绘对象的,**如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就可以认为是抽象类。**抽象类除了不能实例化对象之外,类的其他功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。由于抽象类不能实例化对象,所以抽象类必须被继承才能被使用。

但是对于java来理解,设计了接口更多的是为了去支持多继承的功能。

那么从这个角度去是使用的话,最大的区别在于:类可以实现多个接口,但只能继承一个类

问题:什么时候使用接口什么时候使用抽象类?

抽象类的关键好处在于能够实现面向对象设计的一个最核心的原则OCP(Open-ClosedPrinciple)。所以但我有一部分内容不想让子类修改,但是子类又都通用,同时各个子类又有自己的特点,那么适合使用抽象类。
在面向对象领域,抽象类主要用来进行类型隐藏。我们可以构造区一组个固定行为的抽象描述,但是这组行为却能够有任意个可能的具体实现方式。这个抽象描述就是抽象类,而这一组任意个可能的具体实现则表现为所有可能的派生类。模块可以操作一个抽象体。由于模块依赖于一个固定的抽象体,因此它是不允许修改的;通过这个固定的抽象体派生,也可以扩展此模块的行为功能。
符合开发封闭原则,可以对抽象出来的类进行扩展,但是只要是这个抽象类的子类,那么他必然能够。

从语法层面来说,java单继承多实现,而接口可以多实现。

java为什么不支持多继承

典型支持多继承的语言就是C++。在OOP里面,单继承意味着所有的类都会有一个最上面的终极类,java里面这个类就是Object。单继承既可以说是一门语言的特性,也可以说是一门语言的一个选择。

单根继承的优点:1.兼容性

单根继承带来一个效果就是所有对象归根到底都是相同的基本类型。这带来的好处就是任何java出现的新类库中,兼容性问题会大大减低。

单根继承的优点:2.便利性

因为单根继承,所有的对象都会具备某些一样的功能,比如所有的对象都会有hashcode方法,有euqals方法。因此拿到一个对象时,无论这个对象从哪里来,我们都知道可以对他执行某些操作。参数传递也得到了简化。

单根继承的优点:3.垃圾回收

单根继承会使得垃圾回收变得简单很多。因为所有对象都保证具有其类型信息,因此不会因为无法确定类型信息带来的不便。

二、java枚举实现机制


枚举类型在编辑器处理完成之后,是由一个final的类继承Enum类实现的。该类是一个实际存在的类,在该类中,编译器还帮助我们生成了每个枚举类型的实例对象,这些对象分别对应枚举中定义的每个枚举类型本身。

三、java中内部类

定义:将一个类的定义放在另一个类的定义内部,即为内部类。
内部类本质上是java的一种“语法糖”。例如:

	public class A{
		private int a;
		static class B{
			
		}
		class C{
			public void test(){
				int b = a;
			}
		}
	}

A类是一个普通类,在他内部定义了两个雷B,C类。从代码结构上来看,B类和C类都在A类的内部,但是在使用编译器编译之后,他们并不是一个类,而是会变成符合一定名称规则的三个类,如下图:
在这里插入图片描述
它在编译之后会产生三个.class文件,因此,本质上它们还是三个类,只是借助了java编译器的语法糖支持,我们可以写在一个类中,从这个例子我们不难推断出,在java里面任何一个类,无论是以怎样的形式定义,在编译之后生成字节码文件之后,其必然是一个单据存在的类。java加载任何一个类的时候都是先加载class文件,若一个类不存在对应的class文件,那么他就无法加载也无法被使用

1.引入库

代码如下(示例):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

2.读入数据

代码如下(示例):

data = pd.read_csv(
    'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

该处使用的url网络请求的数据。


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 22
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值