当前位置:网站首页 > Java基础 > 正文

java基础类和封装



Java是一门面向对象非常好的语言,拥有面向对象的三个基本特征:封装、继承、多态。

1. 什么是封装?

封装就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

1.1. 封装的规则

1. 将类的某些信息隐藏在类的内部,不允许外部程序直接访问;

2. 通过该提供的方法来实现对隐藏信息的操作和访问;

1.2. 封装的步骤

1. 修改属性为私有设为private;

2. 创建getter和setter方法,设为public用于属性的读写;

3. 在gettter和setter方法中加入属性控制语句,用于对属性的合法进行判断;

1.3. 封装的实现

1. 封装一个学生类

代码语言:javascript
复制

2. 调用学生类实例化对象

代码语言:javascript
复制

2. 什么是继承?

继承是面向对象的三大特性之一,可以使子类具有父类的属性和方法,还可以在子类中重新定义、追加属性和方法。当多个类中存在相同的属性和方法,使用继承模式将每个子类相同代码直接抽取出来放到父类中。

2.1. 继承的相关概念及实现

1. 父类:也被称为基类、超类

代码语言:javascript
复制

2. 子类:也被称为派生类

代码语言:javascript
复制

3. 写一个类进行测试

代码语言:javascript
复制
2.2. 继承的优缺点

1. 继承的优点

提高了代码的复用性,多个类相同的成员属性和方法可以放到一类中;

提高了代码的复用性,如果方法的代码需要修改,只需修改一处即可;

2. 继承的缺点;

继承让类与类之间产生了关系,类的耦合性也增加了,当父类发生变化时,子类也不得不跟着变化,削弱了子类的独立性;

2.3. 继承中变量的访问规则

1. 首先在子类局部范围中查找;

代码语言:javascript
复制

2. 如果子类局部范围中查找没有,就在子类成员范围查找;

代码语言:javascript
复制

3. 如果在子类局部范围和子类成员范围查找都没有,就在父类成员查找;

父类代码:

代码语言:javascript
复制

子类代码:

代码语言:javascript
复制

4. 子类局部范围中访问子类成员范围使用this;

代码语言:javascript
复制

5. 子类局部范围中访问父类成员范围使用super;

父类代码:

代码语言:javascript
复制

子类中使用父类成员:

代码语言:javascript
复制
2.4. 继承中构造方法的访问规则

子类中所有的构造方法默认都会访问父类中的无参构造方法。

因为子类会继承父类中的数据,所以子类初始化之前,需要对父类进行初始化。

每个子类构造方法的第一句默认都是super()。

如果父类中没有无参构造方法,只有带参构造方法,怎么办?

1. 父类中自己单独定义一个无参构造方法;

2. 通过super关键字显示调用父类的有参构造方法;

父类如下:

代码语言:javascript
复制

子类如下:

代码语言:javascript
复制
2.5. 继承中的成员方法访问规则

1. 首先在子类范围中查找;

代码语言:javascript
复制

以上是一个儿子类,他继承了父类,里面有一个study方法。

代码语言:javascript
复制

当实例化儿子对象时,调用study方法,首先调用儿子类里面的study方法。

2. 如果在子类中查找没有,就在父类成员查找;

父类如下:

代码语言:javascript
复制

子类如下:

代码语言:javascript
复制

结果如下:

代码语言:javascript
复制

3. 如果父类和子类中都没有则会报错;

java基础类和封装

2.6. 继承中访问关键字的总结

1. this代表本类对象的引用;

2. super代表父类存储空间的标识,可以理解为父类对象的引用;

2.7. 继承中的方法覆写

当子类中出现了和父类一模一样的方法,该方法中需要父类的功能,而又有自己独特的内容,这样就可以通过覆写父类的方法,这样既延续了父类的功能,又定义了自己的内容。

父类如下:

代码语言:javascript
复制

子类如下:

代码语言:javascript
复制

结果如下:

代码语言:javascript
复制

方法重写注意事项:

1. 私有的方法不能被重写,因为父类中的私有方法子类不能被继承;

2. 子类方法访问权限不能比父类低,可以大于也可以等于,其中公有大于默认,默认大于私有;

2.8. 继承中的权限修饰符

Java中有四种权限修饰符,其中三种有访问权限修饰符,分别为private、public和protected,还有一种不带任何修饰符。

1. private:Java语言中对访问权限限制最窄的修饰符,一般称之为私有的。被其修饰的的类、属性及方法只能被该类的对象访问,其子类不能访问,更不允许跨包访问;

2. default:即不加任何访问修饰符,通常称为默认访问模式。该模式下,只允许在同一个包中进行访问;

3. protect:介于public和private之间的一种访问修饰符,一般称之为保护模式。被其修饰的类、属性及方法只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问;

4. public:Java中访问限制最宽的修饰符,一般称之为公有的。被其修饰的类、属性及方法不仅可以跨类该问,还可以跨包访问;

2.9. 多层继承

在C++语言中,是可以同时继承两个父类的,但是在Java中只支持单继承,如果要继承两个父类,需要分两次分别继承,即多层继承。

3. 什么是多态?

多态是面向对象的三大特征之一,即同一个对象,在不同的时刻表现出来不同的形态。

3.1. 多态的前提和实现

1. 有继承或实现的关系;

2. 子类有对父类的方法进行重写;

3. 父类的引用来自子类对象;

父类代码:

代码语言:javascript
复制

子类代码:

代码语言:javascript
复制

多态实现:

代码语言:javascript
复制
3.2. 多态的访问特点

成员变量:编译看左边,执行看左边;

成员方法:编译看左边,执行看右边;

为什么成员变量和成员方法的访问不一样呢?

这是因为成员方法有重写,而成员变量是没有的。

父类代码:

代码语言:javascript
复制

子类代码:

代码语言:javascript
复制

执行示例:

代码语言:javascript
复制
3.3. 多态的访问优点和缺点

多态的好处:提高了程序的扩展性。

具体的体现:定义方法的时候,使用父类型作为参数,将来在使用的时候,使用具体的子类型参操作。

定义动物父类:

代码语言:javascript
复制

定义子类的狗类:

代码语言:javascript
复制

定义子类的猫类:

代码语言:javascript
复制

定义动物的操作类:

代码语言:javascript
复制

执行示例:

代码语言:javascript
复制

多态的弊端:不能使用子类的特有功能。

3.4. 多态中的转型

1. 向上转型,从子类到父类,父类引用指向子类对象,也是Java中默认的存在方式;

2. 向下转型,从父类到子类,父类引用转为子类对象,这种方式只能显示的强转;

定义父类:

代码语言:javascript
复制

定义子类狗类:

代码语言:javascript
复制

执行示例:

代码语言:javascript
复制

  • 上一篇: java零基础小甲鱼
  • 下一篇: 零基础 JAVA兼职
  • 版权声明


    相关文章:

  • java零基础小甲鱼2024-10-15 21:34:02
  • java循环结构基础多选题2024-10-15 21:34:02
  • java面向对象基础编程题2024-10-15 21:34:02
  • 零基础不建议学java2024-10-15 21:34:02
  • java有工作经验没有基础2024-10-15 21:34:02
  • 零基础 JAVA兼职2024-10-15 21:34:02
  • 老杜java基础2024-10-15 21:34:02
  • java基础课程设计的目的2024-10-15 21:34:02
  • 有java基础学py2024-10-15 21:34:02
  • 动力节点java基础301集2024-10-15 21:34:02