Java——基础知识——类的继承父类的重写Object类final关键字

Posted UDK_KL.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java——基础知识——类的继承父类的重写Object类final关键字相关的知识,希望对你有一定的参考价值。

如有不妥之处欢迎指正



类的继承

概念

  • 类的继承是指在现有类的基础上构建一个新类
  • 继承主要描述类与类之间的关系,利用继承可以在不改变原有类的功能的前提下,对该类进行扩展,被继承的类称为父类,继承的类称为子类,父类和子类是一个相对的概念
  • 子类在继承父类时便拥有了父类中所有的成员变量和方法

实现

[修饰符] class 子类名 extends 父类名
{
	//子类代码
}
-----------------------------------------------
class A{}
class B extends A {}
class C extends B {} //C拥有A和B的所有内容
-----------------------------------------------
class A
{
    public void f()
    {
        System.out.print("A\\n");
    }
}

class B extends A
{

}

public class Main
{
    public static void main(String [] args)
    {
        B b = new B();	//此处仅实例化对象B,注意B中并未声明任何方法

        b.f();
    }
}

输出

A

注意:

  1. Java中一个类只能继承于一个父类,不允许同时继承多个类
  2. 同一个父类可以被多个子类继承
  3. 可以千层饼多层继承

重写父类方法

重父类中方法的方法或成员变量

条件

重写方法/成员变量需要和父类被重写的方法名称/成员变量名称、参数列表和返回值类型均相同

实现

class A
{
    int c=1;
    public void a()
    {
        System.out.printf("%d\\n",c);
    }
}

class B extends A
{
    int c=2;
    public void a()
    {
        System.out.printf("%d\\n",c);
    }
}

public class Main
{
    public static void main(String [] args)
    {
        A test1 = new A();
        B test2 = new B();
        A test3 = new A();

        test1.a();
        test2.a();
        test3.a();
    }
}

输出

1
2
1

  • 从输出中可见虽然子类对父类的方法进行了重写,但是并不会改变原有父类中的方法

super关键字

在子类重写父类的方法后,子类就不能直接访问父类中原有的方法了,因此使用super关键字用来在子类中调用重写父类方法前父类的方法,构造方法也是同理

super.成员变量
super.成员方法()
super[参数列表]//调用构造方法

注意:

  1. 通过super调用父类的构造方法的代码必须位于子类构造方法的第一行,并且只能出现一次

Object类

Object类时所有类的父类,所有类如果没有说明(extends)继承于某个类,默认继承Object类,如果说名明了,那Object类也是父类的父类

Object类中的常用方法

方法声明功能描述
bolean equals(Object obj)判断某个对象与此对象是否相等
final Class<?>getClass()返回此 Object 的运行时类
int hashCode()将对象的内存地址进行哈希运算并返回一个int类型的哈希码
String toString()以字符串的形式返回对象的基本信息
void finalize()清理没有被任何引用变量所引用的对象的资源(内存回收)

final关键字

作用

被final修饰的类、变量或方法具有以下特征

  1. 被修饰的类不能被继承
  2. 被修饰的方法不能被子类重写
  3. 被修饰的变量只能被赋值一次(变为常量),且在定义时必须初始化
 final class A
{
    final public int c = 0; //final和访问限制符都是修饰符
    public final int c = 0;
    
    public final void a()
    {

    }
}

以上是关于Java——基础知识——类的继承父类的重写Object类final关键字的主要内容,如果未能解决你的问题,请参考以下文章

新年在家学java之基础篇-高级类的特性

面向对象_05类的继承:extends重写父类

java基础讲解09-----接口,继承,多态

odoo9 继承父类的方法和重写父类的方法

Java基础---面向对象

Java 继承与重写重载