Java学习笔记:Java基础篇(五)——面向对象:Java继承

继承

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

生活中的继承:
在这里插入图片描述

类的继承格式

在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的

class 父类 {
}
 
class 子类 extends 父类 {
}

为什么需要继承?
提高代码的复用性(也就是同样的代码可以多次使用,但不必写出)。
子类继承父类之后,就具备了父类中的所有属性和方法,子类就不会存在重复的代码。
注意:
Java不支持多继承,但支持多重继承。通俗地说,一个类只允许有一个父类,但它可以有多个子类。

  • 不允许多继承: 如果B类继承A类,则B类便不能继承C类。(即:B继承A,且B继承 C,这样子是错误的写法)
  • 支持多重继承: B继承 A,C继承 B……这样是可行的。
  • 不同类可以继承同一个类: B继承 A,C也继承 A,这样也是可行的

继承的特性

  • 子类拥有父类 非private 的属性和方法(注意是 非private,也就是:不是父类私有的东西,你都可以拥有。举个例子就是:你父亲的财产你可以继承,但父亲的人生经历你无法继承)
  • 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展
  • 子类可以用自己的方式实现父类的方法。
  • Java 的继承是单继承,但是可以多重继承。这点上面也说了,此处不再赘述。
  • 提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)。

继承关键字

  • 继承可以使用 extendsimplements 这两个关键字来实现继承,而且所有的类都是继承于 java.lang.Object,当一个类没有继承的两个关键字,则默认继承object(这个类在 java.lang 包中,所以不需要 import)祖先类。

extends不再赘述,这里说一下 implements 关键字:

  • 使用 implements 关键字可以变相的使java具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口(接口跟接口之间采用逗号分隔)。

也就是 类不支持多继承,使用 extends 关键字;但接口支持多继承,使用 implements 关键字

super 与 this 关键字

super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。

this关键字:指向自己的引用。
说白了就是一个指代作用。举个例子:张三使用爬虫爬到了监狱,显然他违法了。
这个语句里,“他” 指代 “张三”。
而在Java 中 super 指代当前对象的父类,this 指代自己

final关键字

final 关键字声明类可以把类定义为不能继承的,即最终类;或者用于修饰方法,该方法不能被子类重写

  • 声明类:final class 类名 { //类体 }
  • 声明方法:修饰符(public/private/default/protected) final 返回值类型 方法名(){ //方法体 }
  • 注: 实例变量也可以被定义为 final,被定义为 final 的变量不能被修改。被声明为 final 类 的方法自动地声明为 final,但是实例变量并不是 final

构造器

  • 子类是不继承父类的构造器(构造方法或者构造函数)的,它只是调用(隐式或显式)。
  • 如果父类的构造器带有参数,则必须在子类的构造器中显式地通过 super 关键字调用父类的构造器并配以适当的参数列表。
  • 如果父类构造器没有参数,则在子类的构造器中不需要使用 super 关键字调用父类构造器,系统会自动调用父类的无参构造器

补充知识点:Java Number类与 Math类

Java Number类

一般地,当需要使用数字的时候,我们通常使用内置数据类型,如:byte、int、long、double 等。
然而,在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情形。为了解决这个问题,Java 语言为每一个内置数据类型提供了对应的包装类。
所有的包装类(Integer、Long、Byte、Double、Float、Short)都是抽象类 Number 的子类。

包装类基本数据类型
Booleanboolean
Bytebyte
Shortshort
Integerint
Longlong
Characterchar
Floatfloat
Doubledouble

这种由编译器特别支持的包装称为装箱,所以当内置数据类型被当作对象使用的时候,编译器会把内置类型装箱为包装类。相似的,编译器也可以把一个对象拆箱为内置类型。Number 类属于 java.lang 包。

至于用不用得上,咱也不知道,也不难记,目前来说我也不知道它的应用场景,以后用上了再次总结。

Java Math 类

Java 的 Math 包含了用于执行基本数学运算的属性和方法,如初等指数、对数、平方根和三角函数。

Math 的方法都被定义为 static 形式,通过 Math 类可以在主函数中直接调用。

Number & Math 类常用方法

方法描述方法描述
xxxValue()将Number对象转化为 xxx 数据类型的值并返回compareTo()将number对象与参数比较
equals()判断number对象是否与参数相等valueOf()返回一个Number对象指定的内置数据类型
toString()以字符串形式返回值parseInt()将字符串解析为int类型
abs()返回参数的绝对值ceil()返回大于等于给定参数的最小整数,类型为double
floor()返回小于等于给定参数的最大整数rint()返回与参数最接近的整数,返回类型为double
round()表示四舍五入,Math.floor(x+0.5)min()返回两个参数中的最小值
max()返回两个参数中的最大值exp()返回自然数底数e的参数次方
log()返回参数的自然数底数的对数值pow()返回第一个参数的第二个参数次方
sqrt()求参数的算数平方根sin()求指定double类型参数的正弦值
cos()求指定double类型参数的余弦值tan()求指定double类型参数的正切值
asin()求指定double类型参数的反正弦值acos()求指定double类型参数的反余弦值
atan()求指定double类型参数的反正切值atan2()将笛卡尔坐标转换为极坐标,并返回极坐标的角度值
toDegrees()将参数转化为角度toRadians()将角度转换为弧度
random()返回一个随机数

到目前为止,我也不知道什么时候用得上这个。个人觉得用得上的

compareTo()、equals()、valueOf()、toString()、parseInt()
不过到目前为止,真的是啥也不会,感觉离一个产品还远得很。
恳请各位大佬评论指正~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值