JAVA面写对象详解

总结一下Java面向对象的基础知识与理解

一、面向对象

面向对象是一种新的程序设计方法,其基本思想是使用对象、类、继承、封装、多态等基本概念进行的程序设计。
从现实世界中客观存在的事物(即对象)出发来构造软件系统,并且在系统构造中尽可能运用人类的自然思维方式。
面向对象编程主要区别于面向过程编程,在初学编程时(如C语言)都是采用面向过程编程,从直接解决一个问题的
过程出发,编程来实现解决这个问题,面向过程编程其实更快速的解决问题,如在算法竞赛中解题基本也都属于
面向过程。但是面向过程编程不适合项目开发,因为它不方便修改、维护、更新等操作。面向对象编程恰好解决了
此问题。面向对象开发更适合软件项目开发,相当于一种新的编程规范,方便项目的修改维护等。

二、对象

对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行
操作的一组服务组成。服务指的是方法实现的这个对象特有的一些功能。
类的实例化可生成对象,一个对象的生命周期包括三个阶段:生成、使用、消除。

三、类

类是具有相同属性和方法的一组对象的集合,它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和方法
两个主要部分。
类可以由public、abstract、final修饰类。
通常情况下使用public为公共类
abstract修饰类为抽象类。抽象类不能实例化对象,抽象类的作用是可被子类继承,提供属性和方法。可声明为引用,更自然的使用多态。
final修饰类为最终类。不能被继承,没有子类,但是final可以继承其他的类
类的构造方法
构造方法是一个特殊的方法,Java中的每个类都有构造方法,用来初始化该类的一个对象。
构造方法具有和类名相同的名称,不返回任何数据类
有无参构造方法和带参构造方法,构造方法可以重载多次

类和对象的关系

类是模型,抽象的概念,确定对象将会拥有的特征(属性)和行为(方法)
对象是具体实体,是类的实例表现
先定义类,再通过类实例化对象
类是对象的类型,对象是

四、面向对象的基本特性

继承

继承是一种类与类之间的关系,使用已存在的类的定义作为基础,建立新类。
新类的定义可以增加新的数据或新的功能,也可以用父类的功能。如猫和狗都可继承动物类

继承的实现

//编写父类
class Animal{
//公共的属性和方法
}
//编写子类,继承父类
class Dog extends Animal{
  //子类特有的属性和方法
}

当父类和子类都有A方法时,又希望子类的A方法和父类的A方法不同
这时可采用方法重写

方法重写与方法重载

方法重写
1、有继承关系的子类中
2、方法名相同,参数列表相同(参数顺序、个数、类型)
3、访问修饰符,访问范围需要大于等于父类的访问范围
方法重载
1、同一个类中
2、方法名相同,参数列表不同(参数顺序、个数、类型)
3、方法返回值、访问修饰符任意

封装

封装,将类的某些信息隐藏在类的内部,不允许外部程序直接访问,通过该类提供的方法来
实现对隐藏信息的操作和访问,隐藏对象的信息,留出访问的接口。
封装的特点为:只能通过规定的方法访问数据,隐藏类的实例细节,方便修改和实现

封装的代码实现
1、修改属性的可见性为private
private代表这个属性只能在当前类内被访问,实现了信息的隐藏
2、创建getter/setter方法,设为public用于属性的读写
对应开发的可操作接口,可在类外访问private属性
getter-取值,setter-赋值

多态

多态(多种形态),多态是面向对象编程的核心特征,继承和封装都是为了实现多态而准备的。
在面向对象程序设计中,意味着允许不同类的对象,对同一个消息做出不同的响应。
同样是父类的引用,相同的方法,但是实例化对象类型不同执行的方法不同,这就算java中多态的表现
例如吃这种行为都是动物类型的引用,通过实例化对象的类型不同,如猫吃鱼,鸟吃虫,执行的行为能力也不一样

向上转型

1、向上转型,把一个子类的对象转型为一个父类的对象(隐式转型、自动转型)
2、父类引用指向子类实例,可以调用子类重写父类的方法,以及父类派生的方法,无法调用子类特有的方法和属性
3、小类转型为大类

向下转型

1、向下转型、强制类型转换
2、将子类的引用指向父类对象,此处必须进行强制转换,可以调用子类特有的方法
3、必须满足转型条件才能进行转换

Animal c=new Cat();
Cat temp=(Cat)c;

向上、向下转型的作用

1、向上转型多适用于有多个同父子类共同应用的场景,此时可以借由父类引用,根据实际需要,转型为特定的子类对象实现多态。
2、向下转型一般是为了重新获得因为向上转型而丢失的子类特性而存在的,因此通常在向下转型前需要先向上转型。
向下转型可以灵活的应用在多态的基础上,同时兼顾子类的独有性,相较于直接创建子类实例,提高了代码灵活性。

你以为的极限,也许只是别人的起点
原文地址:https://www.cnblogs.com/LengDing/p/15107967.html