JAVA学习探究:java的继承方式

本文探讨了Java中的继承特性,重点介绍了单继承机制和如何通过接口、内部类及多层继承实现多继承。Java的单继承使用`extends`关键字,而多继承则可以通过接口(使用`implements`关键字)、内部类和多层继承来实现。接口和抽象类作为实现多继承的手段,提供了灵活的代码设计方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java的继承方式

java是一种面向对象的语言(OOP),而OOP的一个特点就是继承性,在java语言中,有一个名为java.lang.Object类,java中的所有类都是直接或者间接的继承它得到的。接下来,我们来介绍下,java语言中,继承是怎么实现的(单继承和多继承)。

单继承

java中语言只支持单继承机制,也就是所有类只有一个直接父类,并且单继承是利用extends关键字来实现的。
格式如下(由于比较简单就不举例子了):

class A{//父类A
   // 成员变量;
   // 成员方法;
}
class B extends A{//B类继承A类
   // 成员变量;
   //成员方法;
}
/*需要注意的是,此时B类已经继承了A类的成员和方法,当A类出现出现抽象方法时,需要在子类B类中覆盖该方法,否则是不能用new为其创建实例对象的
  • 解释:
    覆盖:在子类中定义与父类中方法完全相同的名称、参数类型、参数个数,然后再重编程该方法,达到用新功能覆盖掉父类中方法的功能。

多继承

由于java只支持单继承机制,所以在实现多继承功能的时候就不如单继承那么简单了。下来,我们介绍三种可以实现多继承的方法。

方法1:接口

首先,我们补充一下知识点。

  • 抽象类:抽象类是不能用new来创建实例对象的类。格式如下:
abstract class Class_Name{
	//成员变量;
	返回值类型 方法名(形参列表){
		//具体实现
	}
}
  • 接口:接口与抽象类相似,不过,接口需要满足以下条件:
    (1)接口的成员变量全部是静态成员变量,且经过初始化的
    (2)接口中的成员方法全部要声明为abstract的

接口的定义方法如下:

[public] interface Inter_Name [extends 父类接口名称]
{
	//成员变量
	[public][static][final] 数据类型 成员变量名=常量;
	//成员方法
	[public][static] 返回值类型 方法名(形参列表);
}

用接口实现多继承需要用到implements关键字,下面,我们举个例子看看:

/接口实现多继承
interface Inter_A{//父接口Inter_A
    final double PI=3.1415926;
    abstract double C();//周长
}
interface Inter_B {//父接口Inter_B
    abstract double area();//面积
}
public class Class_AB implements Inter_A,Inter_B {
	private double r;
	public Class_AB(double r){
		this.r=r;
	}
	public double C(){
		System.out.println("圆的周长:"+2*PI*r);
	}
	public double areaC(){
		System.out.println("圆的面积:"+PI*r*r);
	}
	public static main(String[] args){
	Class_AB o=new Class_AB(5.0);
	o.C();
	o.area();
	}
}

方法2:内部类

  • 内部类:即定义类在部的类。当内部类没有类名,在定义的同时就生成了对象的类叫做匿名内部类,很显然,匿名类只能生成一次对象。(这里的一次不仅限于声明一个对象)

下面,我们举个例子看一下:

class A{
    private int num=1;
    public int getit(){
        return this.num;
    }
}
class B {
    private String name="wenzhu";
    public String getit(){
        return this.name;
    }
}
class AB {
    class inA extends A{//inA为内部类
        public void printA(){
            System.out.println(this.getit());
        }
    }
    class inB extends B{//inB为内部类
        public void printB(){
            System.out.println(this.getit());
        }
    }
    public void print(){//显示出A类B类中的数值和字符串
        new inA().printA();
        new inB().printB();
    }
    public static void main(String[] args){//执行起点
        AB ab=new AB();
        ab.print();//显示出A类B类中的数值和字符串
    }
}

方法3:多层继承

该方法就是按照单继承的模式,依次继承所需要的类即可。该方法不难,但是比较麻烦,尤其是在要继承的类很多时,导致代码过长,容易出错,所以并不是很推荐,这里举例说明了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值