关于面向对象的概括

关于面向对象的概括

面向对象包括很多方面,抽象类,接口,封装,构造器,继承,多态,,等等

抽象类概述:

抽象类用来描述一种类型应该具备的基本特征与功能, 具体如何去完成这些行为由子类通过方法重写来完成。

如:犬科均会吼叫,但属于犬科的狼与狗其吼叫内容不同。所以犬科规定了有吼叫功能,但并不明确吼叫的细节。吼叫的细节应该由狼与狗这样的犬科子类重写吼叫的方法具体实现。

  • 即抽象方法指只有功能声明,没有功能主体实现的方法。
  • 具有抽象方法的类一定为抽象类。
  • 那么犬科就可以定义为抽象类,吼叫方法为抽象方法,没有方法体。

抽象类特点:

(1)抽象类和抽象方法必须用abstract关键字修饰

  • abstract class 类名()
  • public abstract void 方法名();

(2)抽象类不一定有抽象方法,有抽象方法的一定是抽象类或者接口

(3)抽象类不能实例化

按照多态的方式,由具体的子类实例化,其实这也是多态的一种,抽象类多态

(4)抽象类子类

抽象类和接口的区别:

(1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;

(2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;

(3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;

(4)一个类只能继承一个抽象类,而一个类却可以实现多个接口。

5、abstract 修饰范围

类和方法。不能修饰常量、变量。被修饰的类不能被继承,被修饰的方法不能重写。

接口

从继承链的中间插入一个类,让它的子类具备某些功能而不影响它们的父类。例如 A -> B -> C -> D -> E,A 是祖先类,如果需要为C、D、E类添加某些通用的功能,最简单的方法是让C类再继承另外一个类。但是问题来了,Java 是一种单继承的语言,不能再让C继承另外一个父类了,只到移动到继承链的最顶端,让A再继承一个父类。这样一来,对C、D、E类的修改,影响到了整个继承链,不具备可插入性的设计。

接口是可插入性的保证。在一个继承链中的任何一个类都可以实现一个接口,这个接口会影响到此类的所有子类,但不会影响到此类的任何父类。此类将不得不实现这个接口所规定的方法,而子类可以从此类自动继承这些方法,这时候,这些子类具有了可插入性。

我们关心的不是哪一个具体的类,而是这个类是否实现了我们需要的接口。

接口提供了关联以及方法调用上的可插入性,软件系统的规模越大,生命周期越长,接口使得软件系统的灵活性和可扩展性,可插入性方面得到保证。

接口在面向对象的 Java 程序设计中占有举足轻重的地位。事实上在设计阶段最重要的任务之一就是设计出各部分的接口,然后通过接口的组合,形成程序的基本框架结构。

所以简单总结其用途为:实现类的多继承,以解决Java只能单继承,不支持多继承的问题。

接口实战:(前面的 pubilc abstract 可以省掉)

package myproject03.com.atguishanggu.domain;

public interface  Equipment {

    public abstract String getDescription();
}

构造器

构造器的作用
1.创建对象
2.初始化对象信息
说明:
1.如果没有显式定义类的构造器,系统默认提供一个空参的构造器
2.定义构造器的格式:权限修饰符 类名 (形参列表){}
3.一个类中定义多个构造器,彼此构成重载
4.一旦我们显示的定义了构造器之后,系统就不再提供默认的构造器
5.一个类中至少有一个构造器

构造器实战:

package oop.demo10;

public class TriAngle {
  private   int base;
  private int height;

  public TriAngle(){  //无参构造器

  }
  public TriAngle(int a,int b){   //有参构造器
      base=a;
      height=b;
  }

    public void setBase(int a){
      base=a;
    }

    public int getBase() {
        return base;
    }

    public void setHeight(int b) {
        height = b;
    }

    public int getHeight() {
        return height;
    }

}

继承

继承是值子类继承父类的所有特性与方法的办法。通常代表词是extend

多个类中存在相同的属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只需要继承那个类即可。

多个类可以称为子类,单独这个类称为父类或者超类,基类等。

子类可以直接访问父类中的非私有的属性和行为。

通过extends关键字让类与类之间产生继承关系。

例如: class B extedns A { }

继承相关应用:

package myproject03.com.atguishanggu.domain;

import jdk.net.SocketFlow;
import myproject03.com.atguishanggu.service.Status;

public class Programmer extends Employees {

    private int memberId;//开发团队id
    private Status status;
    private double  salary;

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值