Java~面向对象

 

 

面向过程

面向过程是早期的程序语言设计思想,该思想强调事物的行为细节,面向过程强调的是具体的功能行为。

面向对象(OOP)

把具体的事物封装成一个一个的整体进行描述,使被描述的对象具备一些系统性、整体性的的行为和特征。
而面向对象将功能封装进对象,强调具备了功能的对象,面向对象是基于面向过程的。

三大特性

1、封装

保护内部的操作不被破坏

 

1、封装的方式

四种访问权限
(1)private:类内
(2)default:类内、同包
(3)protected:类内、同包、不同包的子类
(4)public:类内、同包、不同包的子类、不同包的非子类

public class User {
	/*
	* 对属性的封装
	*/
    private String name;
    private float sex;
    private int age;
    /*
    *构造方法
	*/	
    public User(){}
    public User(String name, float sex, int age,) {
        this.name = name;
        this.sex = sex;
        this.age = age;
    }
	/*
	*get()、set()方法是对外开放的接口
	*/
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public float getSex() {
        return sex;
    }
    public void setSex(float sex) {
        this.sex = sex;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

2、继承

在原本的基础之上继续进行扩充

2.1 继承的作用

(1)父类具备的方法子类可以直接继承过来,不用重新书写,提高了代码的复用性
(2)让类与类之间产生关系,有了关系才有多态的实现
(3)Java中只支持单继承,不支持多继承,因为多继承存在安全隐患(当多个父类存在同个功能时,子类不确定要运行哪一个)Java支持多层继承,即父类还可以继承其他类,java用另一种机制解决单继承的局限性,即多实现

2.2 对继承体系的使用

(1)想要使用体系,应该先查阅父类,因为父类定义了该体系的共性功能,了解了父类的功能,就基本可以使用该体系的功能了
(2)在具体调用时,要创建子类的对象,因为有可能当父类是抽象类时父类不能创建对象,而且子类具备更丰富、更具体的功能实现

2.3 继承的特点

  • 覆盖(重写)
  • 如果子父类中的成员一致时,子类成员会覆盖父类成员
  • 当子类继承父类时,沿袭父类的功能到子类中,但子类对该功能的实现细节不一致,子类可以保留父类对该功能的定义,重写功能的内容
  • 覆盖与重载:重载只看参数列表,其他一致参数列表不一致为重载,而重写子父类的参数必须要一致
  • this与super
    this表示当前对象的引用,super表示当前对象父类的引用

2.4 子父类中的构造函数

  • 构造函数不能重写。
  • super()一定要定义在子类构造函数的第一行,当没有默认的空参数构造函数,要手动指定。
  • 构造函数第一行有一条隐式的语句super()/this()。
  • 在对子类对象进行初始化时,父类构造函数也会运行,因为子类中的构造函数默认第一行有一条隐式的super()语句,这样方便子类构造时先获取到父类的共性属性。

2.5 注意事项

  • 千万别为了获取其他类中的功能而继承,必须是类与类间有所属关系才可以继承。
  • 子类覆盖父类时必须保证子类权限大于等于父类,才可以覆盖,否则编译失败
  • 子类静态成员只能覆盖父类静态成员

2.6 final关键字

  •  final关键字可以修饰类、函数和变量
  • 被final修饰的变量只能被赋值一次
  • 被final修饰的类不可以被继承(继承打破了封装性)
  • 被final修饰的方法不可以被复写

2.7 Object类

  • java中有一个特殊的类,Object类,它是所有对象的超类(根类),Object类中定义了所有对象的共性成员
  • Object类中的方法
  • equals() 比较两个对象是否相同
  • toString() 返回该对象的字符串表示形式
  • getClass() 获取该对象对应的字节码文件对象
  • hasCode() 获取该对象的哈希码值

2.8 类间的体系关系(继承、聚集(聚合)、组合)

继承

指的是一个类继承另外的一个类的功能,并增加它自己的新功能或改写旧有功能的具体实现,继承是类与类之间最常见的关系。

聚合

指的是整体与部分的关系。通常在定义一个整体类后,再去分析这个整体类的组成结构。
从而找出一些组成类,该整体类和组成类之间就形成了聚合关系。例如足球队中的足球队员就是聚合关系。
组合
也表示类之间整体和部分的关系,但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在。
部分对象与整体对象之间具有共生死的关系。例如人的各个身体器官之间的关系。

3、多态

3.1多态的定义

在一个指定的范围之内进行概念的转换,某一类事物具备的多种表现形态(动物和猫、狗)

3.2java中多态的表现形式

父类的引用指向自己的子类对象
父类的引用接收自己的子类对象

3.3多态的前提

必须是类与类之间有关系,要么继承,要么实现
子父类间的成员存在覆盖

3.4多态的应用

类型转换:向上转型(自然转型)、向下转型(强制父类引用向下转型)

3.5特点

(1)多态中成员函数的特点:编译时看引用变量所属的类中是否有方法,运行时看对象所属类的方法
(2)多态中成员变量的特点:无论编译或运行时都参看右边,多态中静态成员函数的特点,编译或运行时都参看左边

猜你喜欢

转载自blog.csdn.net/weixin_42679286/article/details/86761415