Java类间的关系

本文详细介绍了Java中的继承特性,包括单继承、域的隐藏与方法覆盖。子类可以隐藏父类的同名域,并通过super关键字访问。同时,讨论了抽象类与抽象方法,强调它们为子类提供实现框架。此外,还提到了接口作为多重继承的解决方案,以及包作为组织相关类和接口的工具。
摘要由CSDN通过智能技术生成

Java中只支持单继承,即一个父类可以有多个子类,一个子类只有一个父类。子类继承父类不能改变父类成员的访问属性。类继承具有传递性。

域的隐藏:

public class A {
    int x=3;
    public void m(){
        x++;
        System.out.println("the x of A is"+x);
    }
}
class B extends A{
    double x=20.67;
    public void n(){
        x--;
        System.out.println("the x of B is"+x);
    }
    public void usehide(){
        System.out.println("the x of superclass is"+(--super.x));
    }

    public static void main(String[] args) {
        B b=new B();
        b.n();  //the x of B is19.67
        b.usehide();    //the x of superclass is2
        b.m();  //the x of A is3
    }
}

子类B中拥有两个同名的域x,并且在方法m(父类)和方法n(子类)中都对x进行了处理,m 和n并不是对同一个x进行处理,虽然这两个成员变量名相同,但代表两个完全不同的数据。当执行从父类继承的方法时,方法内处理继承自父类的变量,当子类执行由自己定义的方法时,处理的是自己定义的成员变量,而将父类中同名的域隐藏起来。若子类想访问父类被隐藏的域,前缀用super关键字加圆点操作符。

方法的覆盖:

子类中的方法覆盖父类中的方法,相同的方法名,相同的方法返回类型,相同的参数表(参数的个数,顺序和类型必须完全相同)。子类的方法将替换掉父类中同名的方法,将清除父类方法占的内存(这与变量的隐藏不一样,隐藏不会清除父类的域),这使父类的方法在子类中不再存在。

抽象类:

抽象类为子类提供一个实现框架,本身却不实现具体的实例。用abstract关键字修饰。只能作为其他类的超类。抽象类中可以不提供抽象方法,但是拥有抽象方法的类必须被声明为抽象类。

抽象方法:

只有方法头,没有方法体,方法的实现细节留给子类实现。抽象方法必须在抽象类中定义,不能用abstract关键字来修饰构造方法,static和private不能与abstract组合使用,final不能跟abstract组合使用。

接口(解决多重继承问题):

接口中定义的所有方法是抽象方法,并且接口中定义的所有域都是常量。接口本身不提供方法的实现,可以使用类来实现接口中的抽象方法。

[public] interface Name [extends superinterface1,...,superinterfacen]

包(package):是一组相关类和接口的集合。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值