目录
今天我将为大家详细介绍面向对象语言最重要的三大特征,因为只有在了解本篇内容并且在日后练习中真正能理解掌握这三大特征,才能确保在后期成为一个合格的面向对象语言程序员。
一、封装
1.概念
封装是指,将类的某些信息隐藏在类内部,不允许外部直接访问。而是通过该类提供的方法来访问和操作这些信息。
2.封装的特点
(1)实现对需要的信息的隐藏
(2)只能通关特定的方法来访问
(3)便于修改操作,可自行加入控制语句
3.封装的具体表现
根据实际要求,类中的属性在不同包、不同类中需要被访问的条件,来给相应属性添加合适的访问权限修饰符。如下是两种常见情况:
(1)成员变量设为私有权限,不能在其他类中访问。
private String name;//没设私有前,外部类可随意对属性进行赋值操作
private int age;
解决方法:
向外界提供一个公共方法来访问。
public void setName(String name){ //提供公共的get、set方法供其使用
if (name.length()>2&&name.length()<6) {//设置控制语句,控制外部使用条件
this.name = name;
}
}
public String getName(){
return this.name;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return this.age;
}
(2)构造方法私有化,外部无法直接调用
在生活中,类似于任务管理器窗口,我们不想让外界创建多个对象,点击几次只会出现一个窗口。
因此创建静态对象,在类加载时,只会创建一次,对外提供。
static Fz f3 = new Fz();
于是将构造方法私有化
private Fz(){
}
构造方法私有化导致外部类无法创建该类的对象,只能通过类名调用该类的方法。因此该方法是静态的。
解决方法:
向外界提供获取该对象的方法
public static Fz getF3(){
return f3;
}
二、继承
1.定义
将多个类的相同属性和行为进行抽取,定义到单独的一个类(基类)中。其他类可以继承基类,拥有基类的属性。
2.继承的优点
(1)减少代码冗余,提高复用性。
(2)更利于功能扩展(在子类中扩展自己独有的属性)。
(3)继承的出现使类与类间产生了 is - a 关系,为多态的使用提供前提。
3.继承使用语法
通过extends关键字,声明一个类B继承类A,格式如下:
[修饰符] class A{
......
}
[修饰符] class B extends A{
......
}
其中,B为子类,A为基类/父类。
4.实例演示
例如猫和狗,他们的共同属性——为他们get、set名字和年龄。这时我们可以抽取一个动物类,写出get、set方法,减少代码冗余。
猫类: