封装,继承,Super详解,方法重现

yuan947022015 / 2023-08-23 / 原文

封装,继承,Super详解,方法重现

1.封装定义:

该露的露!该藏的藏。我们程序设计要追求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。

封装(数据得隐藏)

记住这句话就够了:属性私有,get/set

package com.oop.demo4;
import com.oop.demo4.Student;

/**
*1.提高程序安全性,保护数据
* 2.影藏代码得实现细节
* 3.统一接口
* 4.系统可维护性增加
*/

public class Application {
   public static void main(String[] args) {
       Student s1= new Student();
       s1.setName("你好");
       System.out.println(s1.getName());
       s1.setAge(20);
       System.out.println(s1.getAge());
  }
}
package com.oop.demo4;

//类 private私有
public class Student {

   // 名字
   private String name;

   // 学号
   private  int id;

//   性别
   private String sex;

   // 年龄
   private int age;

   // 提供一些可以操作这个属性得方法
   // 提供一些public得get/set方法

   //获取值
   public String getName(){
       return this.name;
  };

   //设置值
   public  void  setName(String name){
       this.name=name;
  }

   // alt + insert


   public int getId() {
       return id;
  }

   public void setId(int id) {
       this.id = id;
  }

   public String getSex() {
       return sex;
  }

   public void setSex(String sex) {
       this.sex = sex;
  }

   public int getAge() {
       return age;
  }

   public void setAge(int age) {
       if(age>120 || age<0){
           this.age=3;
      }else{
           this.age = age;
      }

  }
}
2.继承
  1. 继承本质是对某一批类得抽象,实现更好得建模。

  2. extends的意思是“扩展”。子类是父类扩展。

  3. JAVA中类只有单继承,没有多继承!一个儿子只能继承一个,一个父可以有多个儿子。

  4. 继承是类和类之间的一种关系。除此之外,类和类之间的关系还有依赖、组合、聚合等。

  5. 继承关系的俩个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字extends来表示。子类和父类之间,从意义上讲应该具有"is a"的关系.

  6. ctrl+h(明确继承关系)

  7. 在JAVA中,所有的类,都默认直接或者间接继承Object

3.super详解

super方法用于当子类的属性名和父类的属性名一样时候。用super.父类属性名,获取父类属性,或者调用父类方法。private的属性无法用super调用

super调用必须在构造器的第一行。

注意点:

  1. super调用父类的构造方法,必须在构造方法的第一个。

  2. super必须只能出现在子类的方法或者构造方法中!

  3. super和this不能同时调用构造方法!

super和this的不同

  1. 代表对象不同:this:本身调用者这个对象。super:代表父类对象的应用。

  2. 前提:this:没有继承也可以使用。super:只能在继承条件才可以使用。

  3. 构造方法:this():本垒的构造;super():父类的构造。

4.方法重现

前提:需要有继承关系,子类重写父类的方法!

  1. 方法名必须相同。

  2. 参数列表必须相同。

  3. 修饰符:范围可以扩大,但是不能缩小public>protected>default>private。static也不能用于重写。

  4. 抛出异常:范围,可以被缩小,但不能扩大。

重写:子类的方法和父类必要一致,方法体不同!

为什么需要重写:

  1. 父类功能,子类不一定需要,或者不一定满足!

  2. Alt+insert:override