面向对象之抽象类、接口

abstract class Animal{
	String name;
	int age;
	//动物会叫,使用了abstract抽象方法
	abstract public void cry();//抽象类中可以没有abstract抽象方法
	//抽象类内可以有实现方法
	public void sx(){
		System.out.println("实现方法");
	}
}
//当一个子类继承的父类是abstract抽象类的话,需要程序员把抽象类的抽象方法全部实现。
class Cat extends Animal{
	//实现父类的cry,其实类似上节学习中的子类覆盖父类
	public void cry(){
		System.out.println("猫猫叫");
	}
}
class Dog extends Animal{
	//实现父类的cry,其实类似上节学习中的子类覆盖父类
	public void cry(){
		System.out.println("汪汪叫");
	}
}

抽象类--深入讨论

抽象类是java中一个比较重要的类。

1、用abstract关键字来修饰一个类时,这个类就是抽象类。

2、用abstract关键字来修饰一个方法时,这个方法就是抽象方法。

3、abstract抽象类中的abstract抽象方法是不允许在抽象类中实现的,一旦实现就不是抽象方法和抽象类了。abstract抽象方法只能在子类中实现。

4、抽象类中可以拥有实现方法。

5、抽象方法在编程中用的不是很多,但是在公司笔试时,却是考官比较爱问的知识点。

 

抽象类--注意事项

1、抽象类不能被实例化    也就是说抽象类不能被new:抽象类里面的方法是做什么的 他自己都不知道  怎么可能被实现呢?

2、抽象类不一定要包含abstract方法。也就是说,抽象类可以没有abstract抽象方法。 也就是说里面可以没有任何方法!

3、一旦类包含了abstract抽象方法,则这个类必须声明为abstract抽象类。

4、抽象方法不能有主体。

    正确的抽象方法例:abstract void abc();

    错语的抽象方法例:abstract void abc(){}

 

接口-深入讨论

USB插槽就是现实中的接口。

什么是接口?

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

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

语法:class类名 implements 接口{

       方法;

       变量;

    }

小结:接口是更加抽象的抽象的类,抽象类里的方法可以有方法体,接口里的所有方法都没有方法体。接口体现了程序设计的多态和高内聚低偶合的设计思想。

 

//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);
	}
}

接口--注意事项

1、接口不能被实例化

2、接口中所有的方法都不能有主体。错误语法例:void aaa(){}←(注意不能有花括号)

   接口可以看作更加抽象的抽象类。

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

4、接口中可以有变量[但变量不能用private和protected修饰]

  a、接口中的变量,本质上都是static的而且是final类型的,不管你加不加static修饰

  b、在java开发中,我们经常把常用的变量,定义在接口中,作为全局变量使用

        访问形式:接口名.变量名

5、一个接口不能继承其它的类,但是可以继承别的接口

区别

抽象类里面可以有实现了方法    接口不能有

抽象类只能继承一个类,接口可以实现多个接口

                                         接口只能继承接口不能继承类




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值