Java基础

面向对象三大特征

一:封装

1.概念:

将数据和基于数据的操作封装在一起。

2.好处:

重点:将数据保存在内部;
目的:将类使用者和类设计者分开。

3.应用在代码中。

  1. 在定义变量和成员方法是要秉持授予最小访问权限的原则。
  2. 若成员变量被“pirvate”定义,要考虑提供对应得public get,public set方法。
    好处:可以修改private成员变量;完成对成员变量访问的读写分离;可以在修改值时进行检查,拒绝错误修改

4.访问权限修饰符

在Java中,一切事物都有访问权限,在语言层面是由访问权限修饰符实现。

在声明的类体中 / 同包的其他类的类体中 / 不同包(在import情况下)
public
protected
默认(包权限)
private(最小访问权限)

成员变量,成员方法(类中成员)

针对对于其他类的可见性(类能不能使用)。

public:

在类体中:可以直接访问,可以创造对象进行访问。

在同包其他类中:可以通过创造对象进行访问。

不同包的类中:同上。
三种情况都能访问。

protected:

在类体中:可以直接访问,可以创造对象进行访问。

在同包其他类中:可以通过创造对象进行访问。

不同包的类中:
分两种情况:
在非同包的子类中,可以直接访问父类的protected修饰的成员。
在非同包的子类中,创建该子类对象访问父类中的protected修饰的成员。
其他情况不能访问。(特别注意在跨包子类中创建父类对象,并不能访问protected类变量)

默认(缺省):

在类体中:可以直接访问,可以创造对象进行访问。

在同包其他类中:可以通过创造对象进行访问。

不同包中不能访问。

private:

在类体中:可以直接访问,可以创造对象进行访问。

其他都不能访问。

针对对于外部的使用者的可见性(能不能用这个类)

public:

同一包中可以访问到。

不同包中可以访问到。

默认:

在同一包中可以创建类对象。

不同包中不能创建类对象和继承。

控制修饰符的好处

从代码的使用者来讲:可以快速忽略不该碰触的“private”方法。
从coder的角度来讲:可以防止自己的代码被别人广泛使用,从而免费帮别人维护。同时可以安全得实现细节。

二.继承

概念:

java的一种复用机制,防止代码产生冗余。
表示一种从属关系。is-a的关系:
从数据类型看可以把子类类型当做父类类型。因为子类拥有父类的所有数据和基于这些数据的操作。
语法:class A extends B {}

被继承的类叫做父类(基类,超类)
继承其他类的类叫子类(派生类)

子类通过继承机制,可以拥有父类的“所有成员”。

优缺点:

优点:

  1. 代码复用;
  2. 便于维护;减少代码冗余;
  3. 弱化了Java语言的类型约束(父类类型引用指向子类对象)
    缺点:
    父类修改后,会反应在所有的子类中,我们无法选择父类中的修改应该反应在哪些子类中。

单重继承:

extend后面只能跟一个类名。
但这不意味着一个类只能继承另外一个类的类成员。而是可以继承该类和该类的所有祖先类。

注意事项:

  1. 子类只能访问父类的所有非私有成员。
  2. 子类不能继承父类的构造方法。

子类对象的初始化:

子类对象中,有两部分数据构成,一部分是父类中声明的变量,一部分是子类中自己定义的成员变量的值。初始化过程中,需要先初始化父类中的变量,再初始化子类中的变量,因为避免一些子类中的变量初始化需要用到父类变量的情况。
Day7

实现条件:保证父类的构造方法执行在子类之前。
隐式初始化

由JVM完成。
条件:

  1. 父类中存在默认的构造方法。
  2. 子类中没有显示地调用父类的其他构造方法。
  3. 则在子类构造方法执行前,会自动调用父类的默认构造方法。
显式初始化

由我们自己编写。

  1. 在子类构造方法中通过super()的方式调用父类构造方法。
  2. super语句必须在子类构造方法的第一句位置。
  3. 若父类没有默认构造方法,则在子类构造方法的第一句位置通过super(实参列表)调用某个构造方法。
  4. super和this在构造方法中不共存,因为都需要放在第一句的位置。
super关键字

super代表父类的引用。可以类比this。

相关文章:

  • 2021-08-23
  • 2021-06-08
  • 2021-09-16
  • 2021-10-19
猜你喜欢
  • 2021-04-18
  • 2021-12-13
相关资源
相似解决方案