java 基础5 抽象类 接口 final

抽象类的必要性


class Animal{
	String name;
	int age;
	public void cry(){
		System.out.println("unknow");	//这个方法很少能被用到
	}
}

不管什么动物  继承了 Animal 以后都会 改写cry方法  所以这个方法 根本没啥必要


abstract class Animal{
	String name;
	int age;
	abstract public void cry();
}

//当一个类继承的父类是抽象类时 
//必须把抽象类所有的抽象方法实现
class Cat extends Animal{
	public void cry(){
		//...什么都不写 也叫实现
	}
}

抽象方法不能实现   就是抽象方法  () 后边不能加{}


抽象类   不能创建实例  不能实例化

抽象类   可以没有抽象方法 

一个类中包含的方法   被定义为抽象方法  这个类就是抽象类

抽象类里边 可以有普通方法 而不是抽象方法



接口

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

语法:

class 类名 implements 接口{

        方法;   变量}

public class flow {
	public static void main(String[] args) {
		Computer computer1= new Computer();
		Camera camera1 = new Camera();
		Phone phone1= new Phone();
		computer1.useUsb(camera1);
		computer1.useUsb(phone1);
	}
}

interface Usb{
	int a=1;
	//声明两个方法  开始 停止工作
	public void start();
	public void stop();
}
class Camera implements Usb{   //一个类 实现了一个接口,必须接口里边的方法 全部实现
	public void start(){
		System.out.println("camera start");
		}
	public void stop(){
		System.out.println("camera stop");
	}
}	
class Phone implements Usb{
	public void start(){
		System.out.println("Phone start");
	}
	public void stop(){
		System.out.println("Phone stop");
	}
}
class Computer {
	public void useUsb(Usb usb){   //重要!!只要一个类 实现了一个接口  那么这个类的 实例 可以被接口使用
		usb.start();
		usb.stop();
	}
}


1.接口不能实例化

2.接口中所有方法 都不能有主体   (抽象类里边可以有)   方法的主体 就是 {  }

3.一个类  可以实现多个接口

4.接口中可以有变量  变量本质上 是  static 和 final的

经常把常用的变量 定义在接口中,作为全局变量使用.   接口名,变量名

5.接口不能继承类   但是可以继承接口


interface fish{
	public void swimming();
}
interface bird{
	public void fly();
	
}
class Monkey{
	String name;
	public void jump(){
		System.out.println("会跳");
	}
}

class SmallMonkey extends Monkey implements fish,bird {
	public void swimming(){
		System.out.println("猴子游泳");
	}

	public void fly() {
		// TODO Auto-generated method stub
		
	}
	
}


实现接口可以看作是 对继承的一种补充

实现接口可以在不打破继承关系的前提下,对某个类功能扩展,非常灵活


前期绑定   后期绑定  


final

用final 修饰  表示不可以被修改 不可被覆盖

变量用 final 修饰  必须赋初值

父类里边  final 修饰的方法 子类是不能重写的
类 如果用 final修饰  则不能被继承


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值