JavaSE(二十)——面向对象的概念及三个基本特征

1. 面向对象的概念

  • 面向对象是一种符合人类思维习惯的编程思想。现实生活中存在各种形态不同的事物,这些事物之间存在着各种各样的联系。
  • 在程序中使用对象来映射现实中的事物,使用对象的关系来描述事物之间的联系,这种思想就是面向对象。
  • 提到面向对象,自然会想到面向过程,面向过程就是分析解决问题所需要的步骤,然后用函数把这些步骤一一实现,使用的时候一个一个依次调用就可以了
  • 面向对象则是把解决的问题按照一定规则划分为多个独立的对象,然后通过调用对象的方法来解决问题。
  • 当然,一个应用程序会包含多个对象,通过多个对象的相互配合来实现应用程序的功能,这样当应用程序功能发生变动时,只需要修改个别的对象就可以了,从而使代码更容易得到维护。

2. 面向对象的三个基本特征

2.1 封装

定义: 封装是将客观事物封装成抽象类, 并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

举例:

public class Person{
    private String name;
    private int age;
    private String sex;

    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name = name;
    }
    private int getAge(){
        return age;
    }
    private void setAge(int age){
        this.age = age;
    }
    public void setSex(String sex){
        this.sex = sex;
    }
}

如果没有set()和get()方法,那么Person类应该是这样的:

public class Person {  
    public String name ;  
    public int age ;   
    private String sex;

}

需要这样使用它:

Person person = new Person();  
person.age = 18;  
person.name = "小胖";  
person.sex = "男";

封装好处:
(1)如果需要修改Person,比如将sex修改为int类型,几十或者上百个这样的地方需要修改,工作量极大,如果封装了,只需要修改setAge()方法就好了。
(2)针对某些成员变量,不想让其他类知道其值的大小,就可以不去做get()操作,比如Person类中的sex,不想让其他人知道性别,就不做getSex()。
(3)private修饰的成员变量以及成员方法,无法在类外调用,起到了隐藏的作用。

2.2 继承

定义: 继承是从己有的类中派生出的新的类,新的类能够吸收己有类的数据属性和行为,并能扩展新
的属性和行为。关键字(extends)让类与类之间产生继承关系。

举例:

//Dog是子类,Animal是父类
class Dog extends Animal{
}

注意: Java中类不支持多继承,单继承可以使继承关系变得简单,一个类只能有一个父类,一
个类可以继承多个接口 接口支持多继承。

2.3 多态

定义: 多态指不同类对象对同一消息做出的响应。

重写和重载:
(1)方法的重写Overriding和重载Overloading都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。

(2)重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。

(3)重载发生在同一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重载对返回类型没有特殊的要求,对访问权限也没有要求。

多态的三个必要条件

(1)继承
在多态中必须存在有继承关系的子类和父类。基于继承的实现机制主要表现在父类和继承该父类的一个或多个子类对某些方法的重写,多个子类对同一方法的重写可以表现出不同的行为。

(2)重写
子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。

(3)向上转型
在多态中需要将子类的引用赋给父类对象,只有这样该引用才能够具备技能调用父类的方法和子类的方法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值