java(OOP)三大特性
一:封装性
定义
- 封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。要访问该类的代码和数据,必须通过严格的接口控制。只有本类中可以使用(更改)私有变量或者私有方法。
实现方式
- 对属性的封装:private 属性类型 属性名称; 访问被封装的属性,必须提供getter与setter方法,setter方法:主要进行属性内容的设置与修改,getter方法:主要进行属性内容的取得。
- 对方法的封装:private 方法返回值 方法名称(参数列表){},私有方法只有类内部可以使用,提高了安全性和功能性。
封装的优点
1、提高了安全性,防止一些误操作。
2、提高了复用性,封装之后便于调用。
3、信息隐藏,隐藏了实现细节。
示例一
public class Student{
private String name;
private int age;
public void setName(String name){
this.name = name;
}
public void setAge(int age){
this.age = age;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
private void setGrade(){
}
}
二:继承性
定义
- 继承是从已有的类中创建新类的过程,被继承的类称为父类(超类),继承父类的类称为子类(派生类)
注意
- Java只能实现单继承,也就是一个类只能有一个父类,但是可以通过继承接口的方式实现“多继承”。
- 允许多层继承,即:一个子类可以有一个父类,一个父类还可以有其他的父类。
- 继承只能继承非私有的属性和方法,且 构造方法不能被继承。
继承的优点
- 继承可提高代码的复用性。
- 继承可提高代码的稳定性。
- 继承让类与类之间产生关系,是多态的前提。
示例二
class Member{
// 姓名
public String name;
// 编号
public int id;
// 身份
public String identity;
public void my() {
}
}
class Student extends Member{
public void my() {
System.out.println("我是学生");
}
}
class Teacher extends Member{
public void my() {
System.out.println("我是老师");
}
}
public class MainClass {
public static void main(String[] args) {
// TODO Auto-generated method stub
Student s = new Student();
Teacher t = new Teacher();
s.my();
t.my();
}
}
输出结果:
我是学生
我是老师
三:多态性
定义
-
多态是同一个行为具有多个不同表现形式或形态的能力,如同一个类中的同名方法设置不同的形参并实现不同的功能。
-
多态就是同一个接口,使用不同的实例而执行不同操作,如同一个接口被多个类继承并重写接口中方法实现不同操作。
实现方式
- 编译时多态:方法的重载,重载指的是同一个类中有多个同名方法,当方法的参数不同时,编译时就可以确定调用哪个方法,是同一个类中多态性的表现方式。
- 运行时多态:方法的重写,java中子类可以重写父类的方法,同样的方法在父类与子类中有着不同的表现形式。父类的引用可以指向子类对象,程序调用的方法在运行期才动态绑定,运行时才可以确定调用哪个方法,因此称之为运行时多态,是父类与子类之间多态性的表现方式。
多态性优点
- 提高了代码的维护性(继承保证)
- 提高了代码的扩展性(由多态保证)
示例三
// 运行时多态的例子,编译时多态也就是方法的重载了(例子省略)。
abstract class Animal {
abstract void eat();
}
class Cat extends Animal {
public void eat() {
System.out.println("吃鱼");
}
public void work() {
System.out.println("抓老鼠");
}
}
class Dog extends Animal {
public void eat() {
System.out.println("吃骨头");
}
public void work() {
System.out.println("看家");
}
}