面向对象编程-零基础学习4

学习了上面两篇文章的内容

复习一下:

  1. 什么是封装?
  2. 什么是继承?
  3. 什么是多态?
  4. 以上三大特性,在面向对象编程中有什么优势,带给我们编程有什么好处呢?

接下来我们学习新的一个特性:

抽象

  1. 抽象:抽象是从众多的事物中抽取出共同的、本质性的特征
    1. 在软件开发过程中,识别稳定的需求、识别核心的需求、识别概念性的需求、设计系统的架构、定义系统中构件之间的接口关系等等都是抽象的过程,都是反应系统的本质特征的过程。
    2. 抽象的,才是稳定的,才是永恒的。
  2. 什么是抽象类:
    1. 就是不能使用new关键字进行实例化的类,即没有具体实例对象的类。
    2. 包含了抽象方法的类。
  3. 为什么需要抽象类?
    1. 是一种模板模式,抽象类为所有子类提供了一个通用模板,子类可以在这个模板基础上面进行扩展。
    2. 通过抽象类,可以避免子类设计的随意性。通过抽象类,我们就可以做到严格限制子类的设计,使子类之间更加通用。
  4. 如何定义抽象类:
    1. 使用关键字abstract。
  5. 如何定义抽象方法
    1. 使用关键字abstract,抽象方法不能有方法体。
  6. 特点:
    1. 有抽象方法的类,一定是抽象类。
    2. 子类继承抽象父类,必须重写父类的抽象方法。
    3. 抽象类不能被实例化(不能使用关键字new创建对象)。
  7. 示例代码:
    1. //抽象方法,需要放在抽象类里面
      abstract class Animal{
      	
      	public abstract void eat();//抽象方法
      	
      	public void sleep(){
      		System.out.println("zzzzzzzzzzz");
      	}
      }
      //子类继承抽象的父类,必须重写其抽象方法
      class Dog extends Animal{
      
      	@Override
      	public void eat() {
      		System.out.println("狗狗吃骨头....");
      	}
      }
  8. 要点:
    1. 有抽象方法的类只能定义抽象类。
    2. 抽象类不能实例化,即不能用new来实例化抽象类。
    3. 抽象类可以包含属性,普通方法,抽象方法,构造方法,但是构造方法不能用来new实例,只能用来被子类调用。
    4. 抽象类只能用来继承。
    5. 抽象方法必须被子类实现。
    6. public abstract class Car {
      	String type;//属性
      	//构造方法
      	public Car(String type){
      		this.type = type;
      	}
      	//普通方法
      	public void run(){
      		
      	}
      	//抽象方法
      	public abstract void stop();
      }

       

    7. // 父类的构造器调用
      class aCar extends Car {
      	public aCar(String type) {
      		super(type);// 父类构造器的调用
      	}
      	@Override
      	public void stop() {
      
      	}
      }

       

  9. 抽象方法的意义:
    1. 方法的设计和实现分离了。
  10. 什么是接口
    1. 一种特殊的抽象类
    2. 接口中只有抽象方法和常量。
    3. 关键字interface
    4. 一个类如果实现了一个接口,必须实现其接口中的每一个抽象方法!
  11. 实现关系
    1. 一个Java类只能有一个父类,可以有多个接口。
      • (单继承,多实现)
    2. 一个父类的引用,只能访问该父类中定义的方法,而不能随意访问子类中特有的方法。
  12. 为什么要使用接口
    1. 接口定义规范,Java中单继承,多实现。
    2. 一个类可以实现多个接口,也就是遵循多个规范。
  13. 接口和抽象类的区别
    1. 接口就是比“抽象类”还“抽象”的“抽象类”,可以更加规范的对子类进行约束。全面地专业地实现了:规范和具体实现的分离。
    2. 接口就是规范,定义的是一组规则,体现了现实世界中“如果你是...则必须能...”的思想。
      • 如果你是汽车,则必须能跑。
      • 如果你是销售人员,则必须能准守销售章程。
    3. 接口的本质是契约,就像法律,制定好后大家准守。
      • 项目中的具体需求是多变的,我们必须以不变应万变才能从容开发,此处“不变”就是“规范”。因此,我们开发项目往往都是面向接口编程。
  14. 接口定义的格式是:
    1. 【访问修饰符】 interface 接口名 [extends 父接口1,父接口2,...]{
      • 常量定义  //总是:public static final
      • 方法定义  //总是:public abstract
    2. }
  15. 怎么使用接口:
    1. 子类通过implements 实现接口中的规范。
    2. 接口不能创建实例,但是可用于声明引用变量类型。
    3. 一个类实现了接口,必须实现接口中所有的方法,并且这些方法只能是public的。
    4. 接口支持多继承,“接口”可以继承一个或多个“接口”。
      • 例如:A继承,B继承,C继承
  16. instanceof关键字使用方法
    1. 用来判断一个引用是否属于一个类的类型
    2. 判断结果就是true或者false
  17. instanceof案例
    1. 		Vehicles v1 = new Car("BMW", "蓝色", 5);
      		if (v1 instanceof Truck) {
      			Truck t2 = (Truck) v1;
      			t2.showTruck();
      		}else{
      			System.out.println("这个交通工具不是卡车");
      		}		
      		if (v1 instanceof Car) {
      			Car c1 = (Car) v1;
      			c1.showCar();
      		}else{
      			System.out.println("这个交通工具不是小汽车");
      		}

       

未完待续,下一篇文章见。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值