Java语言的三个基本特点
Java语言是面向对象的编程语言,故有三个基本特性,即:封装性,继承性,多态性。这三个特点主要体现在类上,下面对这三个特性逐一进行讲解。
封装性
-
封装即将数据密封起来,防止外界对数据进行更改。一般情况,类的属性就是被封住了的。
-
封装性的几个优点:提高代码的安全性以保护数据、统一接口、隐藏代码的实现细节、增加系统可维护性
-
对数据进行封住主要是通过访问权限修饰符private来实现的,而将数据封装后,就不能在类外调用、修改数据,因此需要用到类中的方法来实现。get()用来获取私有属性的值,set()用于修改私有属性的值(简而言之,就是通过类中的public方法来调用或修改类中的private属性)。
//例题
class Student{
private: //定义了四个学生类的私有属性
int age;
int id;
String name;
String sex;
public Student(){} //构造方法
public void getAge(){ //获取并返回age的值
return age;
}
public void setAge(int a){ //设置age的值
age=a;
}
}继承性
-
继承是存在于面向对象程序中两个类之间的关系。被继承的类称为父类或超类,继承的类称为子类。子类可以调用父类的公用方法公用属性。Object类是所有类的父类。
-
继承的实现
定义子类时,通过关键字extends来指明谁是父类。下面,以Person类,Teacher类,Student类来举例:
class Person{
public String sex;
public int age;
public void live(){}
}
class Teacher extends Person{
public String subject;
public void teach(){}
}
class Student extends Person{
public score;
public study(){}
} -
构造方法在类继承中的作用
要知道,构造方法是不能被继承的,而子类又要对从父类中继承的成员进行初始化,因此,在创建子类对象时,会先调用父类的构造方法然后再执行子类的构造方法。具体遵循以下原则:
(1)子类可以通过在自己的构造方法的第一条可执行语句中通过关键字super来调用父类的构造方法。
(2)若子类构造方法中没有super关键字,在创建对象时,系统将自动调用父类的无参构造方法,然后再执行自己的构造方法。注意:当没有关键字super,且父类中也没有无参构造方法时,在编译时会出错。
多态性
一般的,面向对象的多态性体现在两个方面:
(1)方法的重载。
(2)子类对父类方法的覆盖。也就是子类对父类方法的重新定义。
-
方法的重载
方法的重载就是同一个类中存在多个方法名相同但参数不同的方法,参数的差异包括参数类型,参数个数等。
在调用方法时,方法匹配的原则是:先进行“精准匹配“,若找不到匹配的方法,在进行”自动类型转换匹配“。
所谓自动类型转匹配,就是将实参类型转换至与方法的形参表所匹配的类型。(自动类型转换是按照值类型的等级由低转到高,而强制类型转换需要自己对值进行转换。)
-
方法的覆盖
子类将从父类继承的非私有方法在子类中重新定义,就是方法的覆盖。这是,在通过子类的对象调用方法时,调用的就是子类自己重新定义的方法。
在对父类的方法进行重写时,应与父类具有完全相同的方法名,形参表,返回值类型一般也要相同。
在对父类方法进行重写时,需要注意:
(1)方法的覆盖不能改变方法的静态或非静态属性。
(2)不允许子类中方法的访问修饰符比父类有更多限制。
-
-