Java面向对象的特性


前言


        面向对象编程(Object-Oriented Programming,简称OOP)是一种流行的编程范式,它以“对象”为核心来设计和实现程序。Java是一种广泛使用的面向对象编程语言,具有丰富的面向对象特性。本文将对Java的面向对象特性进行总结和探讨。
 

一、封装性

      封装性是Java面向对象编程的一个重要特性,它通过将数据和操作封装在类中来实现。封装性有助于限制外部对对象的访问,保护对象内部的数据,提高程序的安全性和可维护性。在Java中,可以使用访问修饰符来控制类成员的访问权限,实现不同级别的封装。

     如何实现封装?
       在Java中,通常使用 private 访问修饰符将类的属性和方法私有化,使用public公开getter 和setter方法来访问和修改属性的值,getter是指获取属性值的方法,setter是指修改属性名的方法。

   代码如下(示例):

public class Person {
    private String name;
    private int age;
    //set方法用来修改属性
    public void setName(String name){
        this.name = name;
    }
    //get方法用来获取属性
    public String getName(){
        return this.name;
    }
}


public class PersonTest {
    public static void main(String[] args) {
        Person p = new Person();
        //私有属性name不允许修改和访问,使用set和get修改访问
        //p.name = "刘备";
        p.setName("刘备");
        System.out.println(p.getName());
    }
}

二、继承性

       继承性是Java面向对象编程的另一个重要特性,它允许通过继承父类来创建子类。子类继承了父类的属性和方法,同时可以添加自己的属性和方法,实现代码的重用和扩展。Java支持多重继承,一个类可以继承多个父类的属性和方法。通过使用继承,可以提高代码的复用性和可维护性,减少代码的重复。

   代码如下(示例):

public class Animal {
    String name;
    int age;
    public void eat(){
        System.out.println(this.name+"在吃东西");
    }
}


public class Dog extends Animal {
    //子类扩展自身的属性
    String color;
    String size;
    public static void main(String[] args) {
        Dog d = new Dog();
        //子类继承使用父类的name,age
        d.name = "小黑";
        d.age = 2;
        //子类自身的属性color,size
        d.color="黑色";
        d.size = "小型犬";
        d.eat();

        Animal a = new Animal();
        
    }

}

三、多态性

多态性是Java面向对象编程的另一个重要特性,它允许同一个方法在不同对象上表现出不同的形态。多态性通过接口或继承实现,一个对象可以表现为多种形态,可以根据不同的形态来调用相应的方法。多态性的使用可以提高代码的灵活性和可扩展性,使得程序能够更好地适应需求的变化。

 多态形成的条件:
           1.子类继承父类方法
           2.子类重写父类方法
           3.父类的引用指向子类的实例:

代码如下(示例):

public class Animal {
  void eat(){
      System.out.println("动物吃东西");
  }
  void foo(Animal a){
      a.eat();
  }
}


public class Cat extends Animal {
    @Override
    void eat() {
        System.out.println("猫吃鱼");
    }
}

public class Dog extends Animal{
    @Override
    void eat() {
        System.out.println("狗吃骨头");
    }
}


public class Test {
    public static void main(String[] args) {
   
        Animal a = new Dog();
        Animal b = new Cat();
        a.eat();
        b.eat();
        
       /*
        代码解释:
           Dog和Cat都继承自Animal类,都重写了eat方法,
           在编译时a,b都是Animal类型,Animal有eat方法,
           所以在编辑器中编译时不会报错.在运行时a是Dog类型,
           b是Cat类型,a.eat()执行的是Dog中重写的eat方法,
           b执行的是Cat中重写的eat方法.同一个方法在不同类的对象下
           执行了不同的操作,这种现象我们称为多态.
        */


        /*
        多态参数:
          方法的形参是父类类型,实参是子类类型
        */
        Animal a = new Animal();
        a.foo(new Dog());
        a.foo(new Cat());


    }
}

四、抽象性

       抽象性是Java面向对象编程的另一个特性,它通过抽象类和接口来定义抽象方法和变量。抽象类和接口不能直接实例化,必须被继承或实现。子类必须实现这些抽象方法和变量,实现程序的灵活性和可扩展性。抽象性的使用可以简化复杂问题的处理,提高代码的可理解性和可维护性。

 抽象类的作用:

       抽象类就像是一个模板,定义了一些通用的属性和方法,但是没有具体的实现.可以通过继承抽象类来实现这些方法,从而创建具体的对象

 抽象方法的特点:

         1.没有方法体;

          2.必须在抽象类中定义

抽象类的特点:

      1.不能被实例化,只能做父类;

      2.继承抽象类的子类必须实现抽象类的所有抽象方法,否则子类也要变为抽象类

      3.抽象类可以没有抽象方法,但是抽象方法一定要在抽象类中定义;

代码如下(示例):

public abstract class Animal {
    String name;
    //抽象方法
    abstract void eat();
    abstract void drink();
    public static void main(String[] args) {
        //抽象类不能被实例化
        //Animal s = new Animal();
    }
}


public class Person extends Animal {
    void eat() {}
    void drink() {}

}


总结

Java的面向对象特性包括封装性、继承性、多态性和抽象性。这些特性共同构成了Java面向对象编程的基础。通过使用这些特性,可以提高代码的复用性、可维护性和灵活性,使程序更好地适应需求的变化。在设计和实现程序时,合理运用Java的面向对象特性,可以帮助我们更好地解决问题,提高程序的质量和效率

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Teeny-TinyIT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值