Java基础之三大特性

目录


1.封装


  • 封装,顾名思义,就是将类的信息封装隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法实现对隐藏信息的操作和访问。
  • 示例
public class Student{
    private float score;
    public void setScore(float score){
        this.score = score;
    }
    public float getScore(){
        return score;
    }
}

2.继承


  • 继承可以看作是类与类的一种关系,比较像集合中的从属于关系。比如说,狗属于动物。就可以看成狗类继承了动物类,那么狗类就是动物类的子类(派生类),动物类就是狗类的父类(基类)。
  • 在Java中是单继承的,也就是说一个子类只有一个父类。
  • 父类中所有属性和方法都能继承给子类;父类中的私有方法不能继承给子类。
  • 示例
//父类:动物类
public class Animal{
    public int age;
    public String name;
    public void eat(){
        System.out.println("动物具有吃东西的本领!");
    }
}
//子类:狗类
public class Dog extends Animal {

}

3.多态


  • 指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式(发送消息就是函数调用)
  • 实现多态有三个必要条件:继承,重写,向上转型。
  • Java中多态的实现方式:接口实现,继承父类进行方法重写,同一个类中进行方法重载。
  • 多态的好处:
    • 可替换性(substitutability):多态对已存在代码具有可替换性。例如,多态对圆Circle类工作,对其他任何圆形几何体,如圆环,也同样工作。
    • 可扩充性(extensibility):多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。例如,在实现了圆锥、半圆锥以及半球体的多态基础上,很容易增添球体类的多态性。
    • 接口性(interface-ability):多 态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。如图8.3 所示。图中超类Shape规定了两个实现多态的接口方法,computeArea()以及computeVolume()。子类,如Circle和 Sphere为了实现多态,完善或者覆盖这两个接口方法。
    • 灵活性(flexibility):它在应用中体现了灵活多样的操作,提高了使用效率。
    • 简化性(simplicity):多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。
  • 经典示例:

    package objectandclass;  
    class A {    
         public void show(D obj){    
                System.out.println("A and D");  
         }     
         public void show(A obj){    
             System.out.println ("A and A");    
         }     
    }     
    class B extends A{    
         public void show(B obj){    
             System.out.println("B and B");    
         }    
         public void show(A obj){    
             System.out.println("B and A");    
         }     
    }    
    class C extends B{}     
    class D extends B{} 
    
    A a1 = new A();    
        A a2 = new B();    
        B b = new B();    
        C c = new C();     
        D d = new D();     
        a1.show(b);  
        a1.show(c);  
        a1.show(d);  
        a2.show(b);  
        a2.show(c);  
        a2.show(d);  
        b.show(b);  
        b.show(c);  
        b.show(d);

    结果如下:
    A and A
    A and A
    A and D
    B and A
    B and A
    A and D
    B and B
    B and B
    A and D

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值