Java基础之接口与类

Java基础之接口与类

常用的修饰符

Public: (常用)对所有类可见。使用对象:类、接口、变量、方法。

Protected:对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。

Default: 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。(可以什么也不写)

Private: (常用)在同一类内可见。使用对象:变量、方法。注意:不能修饰类(外部类)

同一类

同一包

不同包子类

不同包

使用对象

Public

类、接口、变量、方法

Protected

变量、方法。 注意:不能修饰类(外部类)

Default

  • 类、接口、变量、方法

Private

变量、方法。注意:不能修饰类(外部类)

类与接口常用关键字

       

abstract

类或者成员方法具有抽象属性

static

静态属性

final

用来说明最终属性,类不能派生出子类,成员方法不能被覆盖,成员域的值不能被改变

class

interface

接口

extends

继承父,类一个类型是另一个类型的子类型,这里常见的类型有类和接口

implements

一个类实现了给定的接口


例如:狗、猫、虎,等属于动物,则动物为一个类;其中一个动物为此类的一个对象、这个对象的属性有:颜色、年龄、名字、行为,等类:类是一个模板,它描述一类对象的行为和状态。
对象:对象是类的一个实例,有状态和行为。



public class Cat {
    //属性
    String breed;
    int size;
    String colour;
    int age;

    //方法
    void eat() {
    }
    void run() {
    }
    void sleep() {
    }
    void name() {
    }

    //无参构造
    public Cat() {
    }
    //有参构造 这个构造器仅有一个参数:age
    public Cat(int age) {
    }           
}

一个类可以包含以下类型变量:

局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。

成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。

类变量类变量也声明在类中,方法体之外,但必须声明为 static 类型。

抽象类:

public abstract class admin {

    public Result<Account> findById(Integer id){
        return new Result<>(BaseUtils.TWO_HUNDRED);
    }
    //抽象方法
    public abstract double computePay();
}

继承抽象类:

public class Eadmin extends admin {
    public Result<Account> findById(Integer id){
        //业务
        return new Result<>(BaseUtils.TWO_HUNDRED);
    }
    //实现抽象方法
    @Override
    public double computePay() {
        return 0;
    }
    public ResultMsg logout(String token) {
        return new ResultMsg(BaseUtils.FOUR_FIFTEEN, "Exit failed");
    }
}

如果一个类包含抽象方法,那么该类必须是抽象类。

任何子类必须重写父类的抽象方法,或者声明自身为抽象类。

1. 抽象类不能被实例化,如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。

2. 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。

3. 抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能。

4. 构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法。

5. 抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类;不一定实现抽象类中非抽象方法

接口:多个类的公共规范,只有抽象方法

特点:

接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错)。

接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量(并且只能是 public,用 private 修饰会报编译错误)。

接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。

public interface IStockService {

    Result<Stock> findByKid(Integer kid);

    Results<Stock> findBySid(Integer sid);

    Result<Stock> findById(Integer id);
}

实现接口:

public class StockService implements IStockService {
    @Resource
    private StockRepository stockRepository;
    @Override
    public Result<Stock> findByKid(Integer kid) {
        Stock stock = stockRepository.findByKid(kid);
        if (stock == null) {
            return new Result<>(BaseUtils.FOUR_FOURTEEN);
        }
        return new Result<>(BaseUtils.TWO_HUNDRED, "OK", stock);
    }
    @Override
    public Results<Stock> findBySid(Integer sid) {
        return new Results<>(stockRepository.findBySid(sid));
    }
    @Override
    public Result<Stock> findById(Integer id) {
        Optional<Stock> optional = stockRepository.findById(id);
        return optional.map(stock -> new Result<>(BaseUtils.TWO_HUNDRED, "OK", stock)).orElseGet(() -> new Result<>(BaseUtils.FOUR_FOURTEEN));
    }
}

接口与类区别

相同点:

1、接口、类和结构都可以从多个接口继承

2、接口类似于抽象类(继承接口的任何非抽象类都必须实现接口的所有成员)

3、接口和类都包含事件、索引器和属性

同点:

1、接口不能实例

2、接口不包含方法的实现

3、接口可以多继承而类只能单继承 

4、类定义可以在不同的源文件之间实现

接口与抽象类类区别

相同点
1、都不能被实例化
2、接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法后才能实例化。

1、 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。

2、 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。

3、 接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法。

4、 一个类只能继承一个抽象类,而一个类却可以实现多个接口。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java之眼

创作不易,一起努力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值