Java面向对象之封装、继承

封装

按照维基百科的定义:
1、 封装是一种可以使类中的字段私有并能通过公有方法来访问私有字段的技术。如果一个字段被声明为私有,它就不能在类的外部被访问,从而隐藏了类内部的字段。
基于这个原因,封装有时也被称为数据隐藏。
2、封装可以被认为是一种能够保护代码和数据被定义在类外的其它代码任意访问的屏障。访问数据和代码由一个接口严格控制。
3、内部实现不需要暴露给外部⽤户. 在接⼝功能不被影响的前提下, 可以随意修改和重构
4、良好的封装是解耦的基础

例子:

## 定义一个Test类,封装一些基本的变量和方法
public class Test{
    private String name;
    private String idNum;
    private int age;

    public int getAge(){
        return age;
    }
    public String getName(){
        return name;
    }
    public String getIdNum(){
        return idNum;
    }
    public void setAge(int newAge){
        age = newAge;
    }
    public void setName(String newName){
        name = newName;
    }
    public void setIdNum(String newId){
        idNum = newId;
    }
}
## 调用Test类
public class Main{

    public static void main(String args[]){
        Test test = new Test();
        test.setName("James");
        test.setAge(20);
        test.setIdNum("12343ms");
        System.out.println("Name : " + test.getName());
        System.out.println("Age : "+ test.getAge());
    }
}

封装的优点:

  • 类中的字段可以被设置为只读或只写。
  • 类可以完全控制它字段里面所存储的东西。
  • 类的使用者不用知道类是如何存储数据的。类可以改变字段的数据类型而类的使用者不需要改变任何之前的

继承

⼦类拥有⽗类⾮private的成员变量和⽅法
⼦类可以拥有⾃⼰的成员变量和⽅法, 即⼦类可以对⽗类进⾏扩展
⼦类可以重新实现⽗类的⽅法, override
Java只⽀持单继承, 即只能有⼀个⽗类

  • 重写
    一个类从它的父类继承一个方法,若这个方法没有被标记为 final, 便可以对这个方法进行重写
    面向对象编程中, overriding 意味着去重写父类已经存在的方法。

示例:

class Animal{
  public void move(){
    System.out.println("Animals can move");
  }
}

class Dog extends Animal{
  public void move(){
    System.out.println("Dogs can walk and run");
  }
}

public class Test{
  public static void main(String args[]){
    Animal a = new Animal(); 
    Animal b = new Dog(); 
    a.move();
    b.move();
  }
}
  • 方法覆盖和方法重写
    Java 中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。
    方法覆盖是说子类重新定义了父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型。

  • super 关键字
    我们可以通过super关键字来实现对⽗类成员的访问,⽤来引⽤当前的引用对象

class Animal{
  public void move(){
    System.out.println("Animals can move");
  }
}
class Dog extends Animal{
  public void move(){
    super.move();
    System.out.println("Dogs can walk and run");
  }
}

public class Test{
  public static void main(String args[]){
    Animal b = new Dog(); 
    b.move(); 
  }
}
  • this
    指向⾃⼰的引⽤

参考: 1、https://zh.wikibooks.org/wiki/Java/%E5%B0%81%E8%A3%85
参考: 2、https://zh.wikibooks.org/wiki/Java/%E7%BB%A7%E6%89%BF

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。