java中类的继承与接口的小结

一、Java中类的继承

(一)类的继承背景导入

java是一门面向对象的语言,在解决问题时,我们把事物看成一个个的对象,研究对象的属性和方法,同时,我们把具有相同的属性和方法的对象归为一类,我们可以由类创建不同的对象。
这里就产生了一个问题,比如说我们有一个学生类(Student),这个类定义了学生的姓名、性别、身高、日常娱乐活动等属性和方法,当我们需要研究大学生时,这个学生类的属性和方法就不够用了,因为大学生有区别于“这个学生类”的一些属性和方法,比如说专业等等。

如果我们再创建一个大学生类(UNStudent),就要重复定义和学生类中一样的属性和方法,这样不仅会显得代码冗长繁琐,而且不方便维护。为了体现现实中的类与类之间的关系,我们在定义的时候就要让大学生类继承学生类。

(二)类的继承格式

Java的继承通过extends关键字实现:

类型修饰词 class 子类 extends 父类{
//类定义的部分
}
比如上面的导入部分:
public class UNStudent extends Student{
//类定义的部分
}

(三)类的继承的注意点:

1.一个类只有一个直接父类,以下这段代码的写法是错误的:

public class A {}
public class B {}
public class C extends A,B {}          // 一个子类继承了两个父类

但可以通过间接的方法实现一个类继承多个类:

public class A {}
public class B extends A {}
public class C extends B {}

这样类A就继承了类B和类C.

2.当子类继承父类后,子类就拥有了父类中定义的属性与方法,但是限于访问权限部分属性和方法不能直接使用。
3.而且子类还可以定义自己特有的属性和方法(这里的方法就只能有子类来调用)。
4.子类也可以重写父类的方法以满足子类的特定需求。但方法的声明除了访问权限可以扩大,其他(方法返回值类型、方法名、参数)必须完全保持一致。

二、Java中的接口

(一)接口的定义

接口类似于类,但接口更加抽象,我们只知道它是来干什么的,但如何实现这个功能却说不清,只有到了具体的子类我们才知道如何去做去。所以接口只是方法、属性、事件等组合而已,它只有方法的定义,并没有方法体。

(二)格式

1.Java 接口的定义方式与类基本相同,不过接口定义使用的关键字是 interface,格式: public interface 接口名{ }

关键字: interface
格式:   public interface 接口名{   }

2.接口的属性

格式:【public static final】属性类型  属性名 = 属性值;

接口中的所有属性都是公有静态常量,即具有public ,static,final属性,但一般又不写这些修饰符。
(static : 静态的,修饰属性,则属性必须初始化)
(final : 不可改变的,修饰属性,则属性必须初始化)

3.接口的方法

格式:【public abstract】 方法返回值类型  方法名(参数类型  参数名,……);

(abstract :表示抽象的,Java接口的方法只能是抽象的和公开的,如果修饰方法,则方法不能有方法体)

(三)接口的实现

1.接口与类不同,Java里的方法是抽象的,没有方法体,不能够创建对象。若需要接口类型的对象,则必须创建一个类实现接口,重写接口的方法。
关键字: implements

格式:public class 类名 implements 接口名{  
//接口的属性

//接口的方法
 }

2.其中被实现的接口可以有多个,之间用逗号分隔,这一点是类在继承时无法做到的。
3.Java只支持单继承,如果想接口想达到多继承的效果,可以通过实现多个接口的方式来实现。

interface A{
   int  a=8;
    void adda();
}

interface B extends A{
    int b=18;
    void addb();
}

interface C extends A,B{
    int c=188;
    void addc();
}

class Multiple implements C{
    public void adda(){
        System.out.println("a");
    }
    public void addb()
    {
        System.out.println("b");
    }
    public void addc()
    {
        System.out.println("c");
    }

}

这样接口C就继承了类B和类C;用类Multiple实现了接口C.

若文章有错误,感谢大家指正。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值