Java面向对象

发布时间:2024年01月14日

继承的概念

继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。

继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。


这幅图的意思是食肉动物继承了动物的特性,在这基础上它独有的特性是·吃肉

继承的用处是

我们在生活中会有一个手机,手机有很多牌子,有很多种类,就假设手机都可以打电话,但是小米手机可以打王者,华为手机可以打原神。假设这两个是单独特有的属性。那我们写代码时候是不是需要写:
小米:打电话,打王者
华为:打电话,打原神
这里面打电话部分是不是重复的,都属于手机这个大的整体的特性?
所以我们可以用继承去实现减少重复写代码或者赋予特性

这里的意思是,小米手机有自己打王者的属性,也有它的父亲手机打电话的属性。华为亦如此

Java的继承用关键字extends实现

类的继承格式:

继承的类型:

java可以支持多重继承不支持多继承

代码举例实现:

tips:我遇到了一个问题,就是前面开始写的时候出现了警告,意思是静态方法需要类去调用而不是类实例化的对象,就是你的函数方法不能是public static void call()。所以得把static删掉

继承的特性

  • 子类拥有父类非 private 的属性、方法。

  • 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。

  • 子类可以用自己的方式实现父类的方法。

  • Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 B 类继承 A 类,C 类继承 B 类,所以按照关系就是 B 类是 C 类的父类,A 类是 B 类的父类,这是 Java 继承区别于 C++ 继承的一个特性。

  • 提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)。

implements关键字

这个关键字是用来继承接口的
接口是什么:接口我认为就是一个方法只有名字但是没有实现,就比如我的一个方法叫call,但是里面是空的,就是我不知道怎么call,不知道怎么实现call。只有名字的方法

interface用来声明接口


1.定义接口 2.实现接口的方法 3.调用这个方法

两个关键字:

super:指向父类,可以调用父类的方法 super.方法()
this:指向自己,可以调用自己的方法 this.方法()

final关键字是指的最终的,如果 final class说明这个是最后一个类,不能被继承,如果是方法函数的化,那这个方法不能被子类修改。

重写(Override)

重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!

重载(Overload)

重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。

每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。

最常用的地方就是构造器的重载。

重载规则:

  • 被重载的方法必须改变参数列表(参数个数或类型不一样);
  • 被重载的方法可以改变返回类型;
  • 被重载的方法可以改变访问修饰符;
  • 被重载的方法可以声明新的或更广的检查异常;
  • 方法能够在同一个类中或者在一个子类中被重载。
  • 无法以返回值类型作为重载函数的区分标准。

多态

多态很像重写,就是孩子跟父亲都有一个call方法,然后我的call方法与父亲的不同

虚函数,像c++里面的,就是有个名字没有实体

Java 抽象类

在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。

由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。

父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。

在 Java 中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口。

封装

简而言之就是方法和属性我都封住了,只能通过函数去调用它,不能直接改变他。
举个例子,我身高是属性
我让我的身高为1.79直接赋值,就不是封装
我通过调用一个方法然后赋值我的身高为1.79,就是封装。就是不能被外部直接调用的

Java 枚举(enum)

Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一年的 12 个月份,一个星期的 7 天,方向有东南西北等。

Java 枚举类使用 enum 关键字来定义,各个常量使用逗号?,?来分割。

enum Color 
{ 
? ? RED, GREEN, BLUE; 
} 
public class MyClass { 
? public static void main(String[] args) { 
? ? for (Color myVar : Color.values()) {
? ? ? System.out.println(myVar);
? ? }
? } 
}


Java的面向对象和c++还是有一些像的,但是不能够多继承类了,但是接口可以多继承

文章来源:https://blog.csdn.net/weixin_74790320/article/details/135578957
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。