java基础1.1
一、接口和抽象类的区别
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提供了大量能使我们快速便捷地处理数据的函数和方法。