Java面向对象(高级篇):二

19 篇文章 0 订阅
本文介绍了抽象类和接口在Java中的概念、特点及区别。抽象类用于描述抽象概念,可以包含抽象方法和非抽象方法,但不能实例化。接口则是一系列方法的声明,只能包含抽象方法和常量,接口的实现类必须重写所有抽象方法。抽象类与接口在继承和实现上有所不同,抽象类用于定义继承体系中的共同属性和方法,接口则用于定义类的扩展功能。两者在实际编程中根据需求选择使用。
摘要由CSDN通过智能技术生成

1. 抽象类

1.概述:
抽象类,什么是抽象类?顾名思义,抽象类肯定是用来描述抽象概念的类,抽象类中的方法不一定要实现具体功能。
2.特点:
1.被abstract修饰
2.抽象类中不一定有抽象方法,但是有抽象方法的类一定是抽象类
3.抽象类中有构造方法,但是不能被实例化
4.抽象类的子类可以是抽象类,也可以是标准类,但是标准类必须重写抽象类的方法

//我们来尝试这写一个抽象类
abstract class A{
//定义成员变量
public static final String country = "china";
private String name = "tom";

public String getName() {
        return name;
    }

 public void setName(String name) {
        this.name = name;
    }

//抽象方法
public abstract void print();
}
//我们再来写一个A类的子类
class B extends A{
public void print(){
//因为子类是普通类,所以子类必须重写抽象类的方法
System.out.println("country="+country);
System.out.println("name="+super.getName());
}
}

//我们进行一下测试
public class Test{
public ststic void main(String[] args){
B b = new B();
b.print();
}
}

结果打印如下:
在这里插入图片描述
3.成员特点:
1.成员变量:可以是变量,也可以是final修饰
2.构造方法:有构造方法是为了子类初始化父类,供子类调用
3.成员方法:抽象方法,普通方法
4.注意事项:
1.抽象类有构造方法,但是不能被实例化,作用是为了供子类调用,初始化父类数据
2.一个类没有抽象方法,也可以被定义为抽象类,目的是不让该类创建对象
3.abstract关键字与其他关键字的关系:
private:冲突
final:冲突
static:冲突且无意义

2.接口

1.概述:
java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为
2.特点:
1.接口用关键字interface修饰
interface 接口名{}
2.类实现接口用implements表示
class 类名 implements 接口名 {}
3.接口不能实例化按照多态的方式,由子类实例化,其实也是多态的一种方式,接口多态
4.接口的子类
抽象类
标准类:重写接口中所以抽象方法
3.成员特点:
接口的成员特点:
1.成员变量
默认被public static final 修饰(推荐手动打出,直观)
接口中不能有变量,只能有常量
2.构造方法:没有构造方法
3.成员方法:默认被 public abstract修饰

//我们来定义一下:

//定义一个接口:
interface Inter{
//成员变量
public int num =10;
public final int num2 = 20;

//public Inter(){}无构造方法
//public abstract void showInfo(){}
}

//接口的实现类
class InterImpl implements Inter{
    public InterImpl(){
    super();//默认Object类
    }
}
//我们测试一下:
public class Test2{
public static void main(String args[]){
Inter inter =new InterImpl();
System.out.println(inter.num);
System.out.println(inter.num2);
//inter.num = 30;接口里的成员变量默认被final修饰,不可修改
System.out.println(Inter.num);//可以通过接口调用,说明被static修饰
System.out.println(Inter.num2);
}
}

运行结果如下:
在这里插入图片描述
4.接口和类的关系:
总结:
类与类:继承关系,只能单继承,多层继承
类与接口:实现关系,类可以实现一个或多个接口
接口与接口:继承关系,可以继承一个或多个,多继承

//代码展示:
public class Test3 {
}
interface Father{

}
interface Mother{

}
interface Sister extends Father,Mother{}

class  Son implements Father,Mother{
}

5.接口和抽象类的区别:
5.1.组成区别:
抽象类:
成员变量:可以是变量也可以是常量
构造方法: 有构造方法
成员方法:可以是抽象方法也可以是非抽象方法
接口:
成员变量:无成员变量,只有常量
构造方法:没有构造方法
成员方法:只能是抽象方法
5.2.关系的区别
类与类
类与接口
接口和接口
5.3.应用区别:
抽象类定义的是继承体系中相同的属性和方法
接口定义的是类的扩展功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值