Java复习——抽象类和接口

本文深入探讨了Java中的抽象类、接口及其关键特性:抽象类用于定义不能实例化的基类,其中可以包含抽象方法和具体实现;接口提供了一种多继承的方式,所有方法默认为抽象,一个类可以实现多个接口;final关键字用于阻止继承、方法覆盖及变量值的修改,常用于创建常量或防止类/方法被继承。同时,文章还介绍了final在不同场景下的应用。

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

一、抽象类

1、当父类中的一些方法不能确定时,可以用abstract关键字来修饰该方法,用abstract来修饰该类

2、抽象类不允许被实例化(Animal an = new Animal())——(Animal an = new Cat())

3、抽象类中可以没有abstract抽象方法(abstract  public  void  cry(){} ),但可以有实现方法(public  void  sx(){} )

4、当一个子类继承的父类是abstract抽象类的话,需要程序员把抽象类的抽象方法全部实现,即子类的成员方法覆盖父类的抽象方法。

5、抽象方法不能有主体

正确:abstractt void cry();

错误:abstract void cry(){};

二、接口

1、使用implements来实现接口

2、接口就是给出一些没有内容的方法,封装到一起,到某个类要使用的时候,再根据具体情况把这些接口写出来。

3、(1)接口可以被看成是更加抽象的抽象类;

      (2)接口不能被实例化;

      (3)所有的方法都不能有主体;

      (4)一个类可以实现多个接口;

    (5)接口可以有变量,但变量不能用private和protected来修饰,接口中的变量本质上都是static类型的,而且是final类型;

    (6)一个接口不能继承其他的类,但可以继承别的接口

4、接口的建立语法:interface 接口名{ };

语法:class 类名 implements 接口{ }

5、接口继承接口用extends,类继承接口用implements.

6、所有的操纵要放在类名文件之外。

6、演示

//接口的实现[Demo125.java]
//电脑,相机,u盘,手机

//usb接口
interface Usb{
	int a=1;//加不加static都是静态的,不能用private和protected修饰
	//声明了两个方法
	public void start();//接口开始工作
	public void stop();//接口停止工作
}
//编写了一个相机类,并实现了usb接口
//一个重要的原则:当一个类实现了一个接口,要求该类把这个接口的所有方法全部实现
class Camera implements Usb{
	public void start(){
		System.out.println("我是相机,开始工作了..");
	}
	public void stop(){
		System.out.println("我是相机,停止工作了..");
	}
}
//接口继承别的接口
class Base{
}
interface Tt{
}
interface Son extends Tt{
}
//编写了一个手机,并实现了usb接口
class Phone implements Usb{
	public void start(){
		System.out.println("我是手机,开始工作了..");
	}
	public void stop(){
		System.out.println("我是手机,停止工作了..");
	}
}
//计算机
class Computer{
	//开始使用usb接口
	public void useUsb(Usb usb){
		usb.start();
		usb.stop();
	}
}
public class Demo125 {
	public static void main(String[] args) {
		System.out.println(Usb.a);
		//创建 Computer
		Computer computer=new Computer();
		//创建Camera
		Camera camera1=new Camera();
		//创建Phone
		Phone phone1=new Phone();
		computer.useUsb(camera1);
		computer.useUsb(phone1);
	}
}

7、子类只能直接继承一个父类但是可以继承多个接口

三、final

1、当不希望父类的某个方法被子类覆盖是,可以使用final关键字修饰

2、当不希望类的某个变量的值被需改,可以用final修饰。若一个变量是final,则必须赋初值。

3、当不希望类被继承是,可以用final修饰

4、final修饰的变量又叫做常量,一般用XX_XX_XX来命名

5、final 修饰的变量在定义时,必须赋值,并且以后不能再赋值

6、final用的场合:(1)因为案例的考虑,类的每个方法不允许修改

(2)类不会被其他类继承;

(3)某些变量值是固定不变的

//final方法的使用[Demo128.java]
public class Demo128 {
	public static void main(String[] args) {
		Aaa aaa=new Aaa();
		aaa.show();
		Bbb bbb=new Bbb();
		bbb.show();
	}
}
class Aaa{ 
	int a=0;//如果a不赋初值,a是0。定义类型后应赋值
	//圆周率不让修改
	//带有final修饰的变量命名时应有_下划线来区分表示。这是java程序员的标准。
	final float reate_1=3.1415926f;//使用final可以保证,需要强制不被修改的数据一定要用final锁定
	//final int b;  //使用final定义变量时一定要赋初值否则报错。
	//b=1;
	final public void sendMes(){//给成员方法用final来修饰则表示不可以被修改,不可被覆盖。
		System.out.println("发送消息");
	}
	public void show(){
		System.out.println("a="+a);
	}
}
final class Bbb extends Aaa{//定义类前加final表示该类不允许被继承
	public Bbb(){
		a++;
		//reate_1=reate+1;
	}
	/*public void sendMes(){
		System.out.println("发送消息")
	}*/
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值