面向对象的三个特性

封装

定义:隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读取和修改的访问级别。

好处:1、良好的封装能够减少耦合;

    2、类内部的实现可以自由地修改;

      3、类内部的实现可以自由地修改。

 1 public class Encapsulation {
 2     private int numA = 0;
 3     private int numB = 0;
 4     public int getNumA() {
 5         return numA;
 6     }
 7     public void setNumA(int numA) {
 8         this.numA = numA;
 9     }
10     public int getNumB() {
11         return numB;
12     }
13     public void setNumB(int numB) {
14         this.numB = numB;
15     }
16     public int getAddResult(){
17         return numA + numB;
18     }
19 }
View Code

 

继承

定义:继承是指一个对象直接使用另一对象的非private属性和方法。

对象的继承代表了一种“is-a”的关系,如果两个对象A和B,可以描述为B是A,则表明B可以继承A。例如:猫是动物,则猫类可以继承动物类。

如果子类继承与父类:

1、子类拥有父类非private的属性和方法;

2、子类具有自己的属性和方法,即子类可以扩展父类没有的属性和方法;

3、子类可以以自己的方式实现父类的方法(方法重写)。

父类:

1 public class Person {
2     protected String name;
3     protected int age;
4 }
View Code

子类:

 1 public class Student extends Person{
 2     public Student(String name, int age){
 3         this.name = name;
 4         this.age = age;
 5     }
 6     public void Show(){
 7         System.out.println("我叫" + this.name + ", 今年" + this.age + "岁,是一名学生!");
 8     }
 9 }
10 
11 
12 public class Teacher extends Person{
13     public Teacher(String name, int age){
14         this.name = name;
15         this.age = age;
16     }
17     public void Show(){
18         System.out.println("我叫" + this.name + ", 今年" + this.age + "岁,是一名教师!");
19     }
20 }
View Code

测试类:

1 public class Test {
2     public static void main(String[] args) {
3         Teacher teacher = new Teacher("KAKA", 40);
4         Student student = new Student("MESSI", 20);
5         
6         teacher.Show();
7         student.Show();
8     }
9 }
View Code

 

多态

定义:不同对象对同一操作的不同实现。

 1 public class Person {
 2     protected String name;
 3     protected int age;
 4     
 5     public void Show(){}
 6     protected void Work(){}
 7     
 8 }
 9 
10 public class Teacher extends Person{
11     public Teacher(String name, int age){
12         this.name = name;
13         this.age = age;
14     }
15     public void Show(){
16         System.out.println("我叫" + this.name + ", 今年" + this.age + "岁,是一名教师!");
17     }
18     public void Work() {
19         System.out.println("我叫" + this.name + ",是一名教师,我的工作是育人!");
20     }
21 }
22 
23 public class Student extends Person{
24     public Student(String name, int age){
25         this.name = name;
26         this.age = age;
27     }
28     public void Show(){
29         System.out.println("我叫" + this.name + ", 今年" + this.age + "岁,是一名学生!");
30     }
31     public void Work() {
32         System.out.println("我叫" + this.name + ",是一名学生,我的工作是学习!");
33     }
34 }
View Code

 

 面向对象的三个特性之间关系。没有封装就没有继承,没有继承就没有多态。

 

posted @ 2014-03-31 19:02  天涯狂客  阅读(168)  评论(0编辑  收藏  举报