封装(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的知识。
后续持续更新,还望诸君多多学习,早日上岸!
需要学习具体教程的可以关注私信我哦!