好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Java三大面向对象特性

学习一时爽,一直学习一直爽

  Hello,大家好,我是 もうり,一个从无到有的技术小白。

Java 是面向对象的高级编程语言,类和对象是 Java 程序的构成核心。围绕着 Java 类和 Java 对象,有三大基本特性:封装是 Java 类的编写规范、继承是类与类之间联系的一种形式、而多态为系统组件或模块之间解耦提供了解决方案。

面向对象

万物皆是对象

面向对象有以下特点:

面向对象是一种常见的思想,比较符合人们的思考习惯;

面向对象可以将复杂的业务逻辑简单化,增强代码复用性;

面向对象具有抽象、封装、继承、多态等特性。

面向对象的编程语言主要有:C++、Java、C#等。

封装

封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,如果属性不想被外界访问,我们大可不必提供方法给外界访问。但是如果一个类没有提供给外界访问的方法,那么这个类也没有什么意义了。

比如下面定义了Person的对象

 public class Person {     // 私有变量     private String name;     private String idNum;     private int age;     // 公共方法      public int getAge(){         return age;     }      public String getName(){         return name;     }      public String getIdNum(){         return idNum;     }      public void setAge( int newAge){         age = newAge;     }      public void setName(String newName){         name = newName;     }      public void setIdNum( String newId){         idNum = newId;     }  }  

new一个maoli对象

 public class Maoli {     public static void main(String args[]){         Person maoli = new Person();         maoli.setName("maoli");         maoli.setAge(20);         maoli.setIdNum("12345");         System.out.print("Name : " + maoli.getName()+                 " Age : "+ maoli.getAge());     }  }  OUT: Name : maoli Age : 20  

继承

继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。

继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

继承可以通过extends和implements两个关键字实现继承

在Person对象中添加公开方法

 public class Person {     // 私有变量     private String name;     private String idNum;     private int age;     // 公开方法     public Person(String myName, String myid,int myage) {         name = myName;         idNum = myid;         age = myage;     }     public int getAge(){         return age;     }      public String getName(){         return name;     }      public String getIdNum(){         return idNum;     }      public void setAge( int newAge){         age = newAge;     }      public void setName(String newName){         name = newName;     }      public void setIdNum( String newId){         idNum = newId;     }  }  

Maoli.java

 public class Maoli extends Person {     public Maoli(String myName, String myid,int myage) {         super(myName,myid,myage);     }     public static void main(String args[]){         Person maoli = new Person("maoli","12345",20);          System.out.print("Name : " + maoli.getName()+                 " Age : "+ maoli.getAge()+"\n");         System.out.println(maoli instanceof Person);     } }   Name : maoli Age : 20 true  

关于继承如下 3 点请记住:

子类拥有父类对象所有的属性和方法(包括私有属性和私有方法),但是父类中的私有属性和方法子类是无法访问, 只是拥有 。

子类可以拥有自己属性和方法,即子类可以对父类进行扩展。

子类可以用自己的方式实现父类的方法。

多态

多态是同一个行为具有多个不同表现形式或形态的能力。

比如我们说"宠物"这个对象,它就有很多不同的表达或实现,比如有小猫、小狗、蜥蜴等等。那么我到宠物店说"请给我一只宠物",服务员给我小猫、小狗或者蜥蜴都可以,那你到底要小猫还是小狗?

我们就说"宠物"这个对象就具备多态性。

 // 抽象类 abstract class Animal {     abstract void eat(); }  public class Test {     public static void main(String[] args) {         System.out.println("调用 show 方法");         show(new Cat());  // 以 Cat 对象调用 show 方法         show(new Dog());  // 以 Dog 对象调用 show 方法         System.out.println("----------------------");         Animal a = new Cat();  // 创建一个a猫         a.eat();               // 调用的是 a猫的 eat         Cat c = (Cat)a;        // c猫和a猫是同一种猫         c.work();        // c猫去工作         Animal b = new Dog();         b.eat();         Dog d = (Dog)b;         d.work();     }      public static void show(Animal a)  {         a.eat();         // 类型判断         if (a instanceof Cat)  {  // 猫做的事情             Cat c = (Cat)a;             c.work();         } else if (a instanceof Dog) { // 狗做的事情             Dog c = (Dog)a;             c.work();         }     } }   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("看家");     }  }  

OUT

 调用 show 方法 吃鱼 抓老鼠 吃骨头 看家 ---------------------- 吃鱼 抓老鼠 吃骨头 看家  

 好了,这就是今天的内容了,今天最后我有一句话要说:

早く行ってほめてください

查看更多关于Java三大面向对象特性的详细内容...

  阅读:38次