java实验六抽象类与接口_JavaSE核心六(抽象类与final类、接口)

本文介绍了Java中的抽象类和接口。抽象类用于定义规范,包含抽象方法和普通方法,不能实例化,其抽象方法必须由子类重写。final类不可被继承,final变量不可再次赋值。接口作为一套规范,包含常量和抽象方法,不能实例化,但类可以实现多个接口。Java 8起,接口中还可以定义默认方法。
摘要由CSDN通过智能技术生成

抽象类

为什么使用抽象类?

1、如果让子类必须去重写父类方法

关键字:abstract

创建时选择abstract

24c08e61952a

抽象类方法:只有方法声明,没有方法实现的方法(此方法 没有 方法体)

//抽象方法

public abstract void test1();

//普通方法

private void test2() {

System.out.println("我是普通方法 test2");

}

重要特点:抽象类中可以声明抽象方法,也可以声明普通方法,但是普通类中不能声明抽象方法。

如何调用抽象方法:

前提:如何去向抽象方法加入方法体---------方法的实现

1、父类中的抽象方法,需要子类去重写

2、抽象类无法象普通类那样进行实例化

3、抽象类可以继承抽象类,可以重写父类抽象方法,也可以不重写

注意:如果子类的父类是抽象类,子类必须要重写父类的抽象方法。抽象方法有一定的强制性

//父类

public abstract class Test03 {

//抽象方法

public abstract void test1();

//普通方法

private void test2() {

System.out.println("我是普通方法 test2");

}

}

//子类

class Demo1_son extends Test03{

//重写 父类 抽象方法 Test03

@Override

public void test1() {

// TODO Auto-generated method stub

System.out.println("本是父类的抽象的方法,重写完变成普通方法");

}

}

调用子类实例化

//父类

public abstract class Test03 {

//抽象方法

public abstract void test1();

//普通方法

private void test2() {

System.out.println("我是普通方法 test2");

}

//调用子类实例化

public static void main(String[] args) {

Demo1_son son=new Demo1_son();

son.test1();

}

}

//子类

class Demo1_son extends Test03{

//重写 父类 抽象方法 Test03

@Override

public void test1() {

// TODO Auto-generated method stub

System.out.println("本是父类的抽象的方法,重写完变成普通方法");

}

}

24c08e61952a

抽象类规则

1、抽象类不能被实例化

2、

口诀:

此类有抽象,必是抽象类;

子类没实现父类抽象,子类必是抽象类

final类

关键字:

final可以修饰的:

1、final修饰 类 时—————此类不能被继承

2、final修饰 变量 —————不能被重新赋值,只能赋值一次;

要么在声明时赋值,或者构造器中赋值;

fianl修饰变量,此变量没有初始值;

3、final 修饰 方法 不能被覆盖,不能被修改

final方法不能被重写,但是可以被重载

接口(interface)

关于继承:子类只能有一个父类

需求:如何让类实现多继承?

用到了接口

接口的概念

1、接口中只包含常量和抽象方法,而没有变量和方法的实现(只能是抽象方法)

2、接口对类来说是一套规范,是一套协议;

因为接口中有抽象方法,所以它对类有一定的约束性:必须要实现接口中的方法

3、接口不是类,不能实例化,同时没有构造器。

接口与类之间不是继承关系,是实现的关系

创建Fathers接口

public interface Fathers {

public abstract void drink(String beer);

}

创建Mathers接口

public interface Mathers {

//接口中的方法为抽象方法

//做饭

public abstract void cook();

}

创建son

public class Son implements Fathers,Mathers{

//重写mother接口

@Override

public void cook() {

// TODO Auto-generated method stub

}

//重写father接口

@Override

public void drink(String beer) {

// TODO Auto-generated method stub

System.out.println("儿子喜欢"+beer);

}

//主方法

public static void main(String[] args) {

Son s=new Son();

s.drink("哈啤");

}

}

接口中的方法默认是public abstract

接口和继承可以同时使用,但不介意使用

接口与类

1、类与类————继承(单继承)

2、类与接口————实现(多继承)

3、接口与接口————继承(多继承)

一个.java可以同时声明接口、普通类、抽象类,虽然存在同一个java文件中,但是会编译成各自的class文件

关于接口与类

类:被接口实现的类叫实现类、

方法**

jdk8———接口新特性

jdk8以后可以在接口中创建一个默认方法,此方法可以是非抽象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值