天天看点

Java面向对象编程四大特征(一)

Java面向对象编程四大特征

抽象性:抽出事物的本质特性,把某类事物的共同的特点描述出来;

封装性:把对象的属性和操作结合在一起,构成一个独立的封装体

继承性:使得一个类可以继承另一个类的属性和方法

多态性:指不同类型的对象接收相同的消息时产生不同的行为

一、抽象

我们去定义一个类的时候,就是把一类事物的共有的属性和行为提取出来,形成一个物理模型,这种研究问题的方法称为抽象。

二、封装

封装就是把抽象出的数据和对数据的操作封装在一起,数据被保护在内部,程序的其他部分只有通过被授权的操作(成员方法),才能对数据进行操作。

代码示例:

package com.xx.day8;
/**
 * @author 程序员小新儿
 *2020年4月6日
 */
//公司职员
  class Clerk{
    public String name;
    //private 私有的
    private int age;
    private float salary;
    //构造函数
    public Clerk(String name,int age,float salary) {
      this.name = name;
      this.age = age;
      this.salary = salary;
    }
    //通过一个成员方法去控制和访问私有的属性
    /**
     * @return the salary
     */
    public float getSalary() {
      return salary;
    }
  }
public class EncapsulationTest {
  /**
   * @param args
   */
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    //创建一个职员
    Clerk clerk = new Clerk("小新" , 21 , 1234.5f);
    System.out.println("职员名字是" + clerk.name + ",薪水是" + clerk.getSalary());
  }
}
           

三、继承

继承可以解决代码复用,当多个类存在相同的属性(变量)和方法时,可以从这些类中抽象出父类,在父类中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法,只需要extends语句来声明继承父类:class 子类 extends 父类 这样子类就会拥有父类定义的属性和方法。(java是单继承而c++可以多继承)

代码示例:

//小学生类
class Pupil{
  //定义成员属性
  private String name;
  private int age;
  private float fee;
  //缴费 不打折
  public void pay(float fee) {
    this.fee = fee;
  }
}
//中学生类
class MiddleStudent{
  //定义成员属性
    private String name;
    private int age;
    private float fee;
    //缴费 打八折
    public void pay(float fee) {
      this.fee = fee * 0.8f;
    }
}
//大学生类
class CollegeStudent{
  //定义成员属性
      private String name;
      private int age;
      private float fee;
      //缴费 打一折
      public void pay(float fee) {
        this.fee = fee * 0.1f;
      }
}
           

代码改造:

//将学生的共有属性提取出来做一个父类
class Student{
  //定义成员属性
  public String name;
  public int age;
  public float fee;
}

//小学生类
class Pupil extends Student{
  //缴费
  public void pay(float fee) {
    this.fee = fee;
  }
}
//中学生类
class MiddleStudent extends Student{
    //缴费 打八折
    public void pay(float fee) {
      this.fee = fee * 0.8f;
    }
}
//大学生类
class CollegeStudent extends Student{
      //缴费 打一折
      public void pay(float fee) {
        this.fee = fee * 0.1f;
      }
}
           

编程中,如果你不希望子类继承某个属性或者方法则将其声明为private。

点我进入公众号看原创链接

微信扫描下方二维码或微信公众号搜索【程序员小新儿】欢迎关注哦~

Java面向对象编程四大特征(一)