JAVA零基础学习之路(十四)

发布于:2023-01-09 ⋅ 阅读:(517) ⋅ 点赞:(0)

封装(encapsulation)

封装是面向对象三大特征之一。

封装的理念:高内聚、低耦合

封装的作用和含义

我要看电视,只需要按一下开关和换台就可以了。有必要了解电视机内部的结构吗?有必要碰碰显像管吗?制造厂家为了方便我们使用电视,把复杂的内部细节全部封装起来,只给我们暴露简单的接口。

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

编程中封装的具体优点:

  • 提高代码的安全性。
  • 提高代码的复用性。
  • “高内聚”:封装细节,便于修改内部代码,提高可维护性。
  • “低耦合”:简化外部调用,便于调用者使用,便于扩展和协作。

封装的实现一使用访问控制符

Java是使用“访问控制符”来控制哪些细节需要封装,哪些细节需要暴露的。Java中4种“访问控制符”分别为private、default、protected、public,它们说明了面向对象的封装性,所以我们要利用它们尽可能的让访问权限降到最低,从而提高安全性。

【注】关于protected的两个细节:

1.若父类和子类在同一个包中,子类可访问父类的protected成员,也可访问父类对象的protected成员。

2.若子类和父类不在同一个包中,子类可访问父类的protected成员,不能访问父类对象的protected 成员。

封装的使用细节

开发中封装的简单规则:

  • 属性一般使用private 访问权限。

属性私有后,提供相应的get/set方法来访问相关属性,这些方法通常是public修饰的,以提供对属性的赋值与读取操作(注意:boolean变量的get方法是is开头!)。

  • 方法:一些只用于本类的辅助性方法可以用private修饰,希望其他类调用的方法用public修饰。

多态(polymorphism)

多态指的是同一个方法调用,由于对象不同可能会有不同的行为。现实生活中,同一个方法,具体实现会完全不同。比如:同样是调用人“吃饭”的方法,中国人用筷子吃饭,英国人用刀叉吃饭,印度人用手吃饭。

多态的要点:

1.多态是方法的多态,不是属性的多态(多态与属性无关)。

2.多态的存在要有3个必要条件:继承,方法重写,父类引用指向子类对象。

3.父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了。

对象的转型(casting)

1.父类引用指向子类对象,我们称这个过程为向上转型,属于自动类型转换。

2.向上转型后的父类引用变量只能调用它编译类型的方法,不能调用它运行时类型的方法。这时,我们就需要进行类型的强制转换,我们称之为向下转型。

1、创建父类Person

class Person{
    String name;
    int age;
    void introduce(){
        System.out.printin("我的名字是"+name+",我的年龄是"+age);
    }
}

2、创建子类Student

class Student extends Person{
    String address;
    void study(){
        System.out.printin(“我正在学习“);
    }
    void introduce(){
        super.introduce();
        System.out.printin("我的地址是"+address);
    }
}

3、对转型进行测试

class Test{
    public static void main(String args[]){
        ∥向上转型
        Student s = new Student();
        Person p = s;
        //Person p=new Student();该句也是向上转型,作用同上边两句

        p.name="张三";
        p.age = 25;
        //p.address=“北京”;一个对象能够调用哪些成员(变量和函数),取决于这个引用的类型,p不可以调用address和study()
        //p.study();同上p不可以调用study()
        p.introduce();

        ∥向下转型
        ∥向下转型必须先有向上转型
        Student S = new Student();
        Person P = S;
        Student S2 = (Student)P;
    }
}

分享一个全面学习JAVA的视频教程

以上就是小编为大家整理的关于JAVA的知识。

后续持续更新,还望诸君多多学习,早日上岸!

需要学习具体教程的可以关注私信我哦!

 

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到