初步学习面向对象
三大特征:
- 封装:核心思想就是“隐藏细节”、“数据安全”,将对象不需要让外界访问的成员变量和方法私有化,只提供符合开发者意愿的公有方法来访问这些数据和逻辑,保证了数据的安全和程序的稳定。所有的内容对外部不可见。(简单点来说就是让你会用机器但是不用知道其原理)
- 继承:子类可以继承父类的属性和方法,并对其进行拓展。将其他的功能继承下来继续发展 。(不能多继承Java中一个孩子只有一个爸爸)
- 多态:同一种类型的对象执行同一个方法时可以表现出不同的行为特征。通过继承的上下转型、接口的回调以及方法的重写和重载可以实现多态。方法的重载本身就是一个多态性的体现。
类与对象
类表示一个共性的产物,是一个综合的特征,而对象,是一个个性的产物,是一个个体的特征。 (类似生活中的图纸与实物的概念。)
类必须通过对象才可以使用,对象的所有操作都在类中定义。
类由属性和方法组成:
属性:就相当于人的一个个的特征
方法:就相当于人的一个个的行为,例如:说话、吃饭、唱歌、睡觉
一个类要想真正的进行操作,则必须依靠对象,对象的定义格式如下:
类名称 对象名称 = new 类名称() ;
如果要想访问类中的属性或方法(方法的定义),则可以依靠以下的语法形式:
访问类中的属性: 对象.属性 ;
调用类中的方法: 对象.方法(实际参数列表) ;
类必须编写在.java文件中;
一个.java文件中,可以存在N个类,但是只能存在一个public修饰的类;
.java文件的文件名必须与public修饰的类名完全一直;
同一个包中不能有重名的类;
匿名对象:
匿名对象没有名字(这不是废话)只能使用一次,而后会被回收。
一般来说,对象在创建之后,会在栈区存放其地址,在堆区存放其实例化对象,而匿名对象则没有在栈区存放其地址。
封装:
四个权限修饰符
修饰符 | 作用域 |
---|---|
private | 同一个类中 |
缺省(就是啥都不写) | 同一个类中,同一个包中子类、无关类 |
protected | 同一个类中,同一个包中子类、无关类,不同包的子类 |
public | 同一个类中,同一个包中子类、无关类,不同包的子类、无关类 |
继承:
继承是面向对象的三大特征之一,可以使得子类具有父类的属性和方法,还可以在子类中重新定义,追加属性和方法。继承是指在原有类的基础上,进行功能扩展,创建新的类型。
Java只能单继承,不能多继承
Object类往上走是所有类的父类
格式: public class 子类名 extends 父类名{}
super和this
super 关键字的用法和 this 关键字的用法相似
- this:代表本类对象的引用(this关键字指向调用该方法的对象一般我们是在当前类中使用this关键字所以我们常说this代表本类对象的引用)
- super:代表父类存储空间的标识(可以理解为父类对象引用)
关键字 | 访问成员变量 | 访问构造方法 | 访问成员方法 |
---|---|---|---|
this | this.成员变量访问本类成员变量 | this(…)访问本类构造方法 | this.成员方法(…)访问本类成员方法 |
super | super.成员变量访问父类成员变量 | super(…)访问父类构造方法 | super,成员方法(…)访问父类成员方法 |
子类构造方法特点:
子类构造方法的子类中所有的构造方法默认都会访问父类中无参的构造方法。
- 因为子类会继承父类中的数据,可能还会使用父类的数据。所以,子类初始化之前,一定要先完成父类数据的初始化
- 每一个子类构造方法的第一条语句默认都是: super()
方法重写:
子类中和父类中出现一样的方法声明时,子类可以重新对方法进行改写。
私有方法不能重写,(私有成员和方法子类无法继承,自然谈不上重写)
子类方法访问权限不能更低(public>默认>私有)
多态:
多态:就是对象的多种表现形式,(多种体现形态)
- 向上转型:将子类实例变为父类实例 格式:父类 父类对象 = 子类实例 ;
- 向下转型:将父类实例变为子类实例 格式:子类 子类对象 = (子类)父类实例 ;
向上转型时,不能调用子类特有的方法,因为声明是父类的,
Instanceof
作用:
判断某个对象是否是指定类的实例,则可以使用instanceof关键字
toString()
- 建议重写Object中的toString方法。 此方法的作用:返回对象的字符串表示形式 ;
- Object的toString方法, 返回对象的内存地址 ;
- System.out.println(对象名)一般输出时调用的时对象的toString方法 ;