初识面向对象
面向对象的三大特性:
封装、继承、多态
类里面的四种权限(权限由低到高):
public、protected、default、private
面向对象编程的本质是:以类的方式组织代码,以对象的组织(封装)数据。
方法回顾和加深
一、方法的调用
在一个class文件中写了方法,如何在另一个class文件中调用。
第一种如果是非静态方法,需要先将类实例化,再进行调用。
第二种如果是静态方法,直接调用就可以了。
第三种是一些特殊的情况,针对的是同一个文件夹中。
加了static的方法都是和类一起加载的,所以如果在类里面都是可以直接调用的,如果是其他的类的static方法,可以使用“类.方法名”进行调用。
但是普通的方法,也就是不加static的方法都是类实例化之后进行调用的,不进行实例化直接进行调用是会出问题的,如下面的这张图片。
二、值传递和引用传递
首先明确的是JAVA为值传递。值传递如下:
引用传递如下:
对象的创建分析
一、创建初始化对象
二、构造器详解(其实就是C++中的构造函数)
构造函数有两个特点:1、必须和类的名字相同。2、必须没有返回类型,也不能写void。
这里有个注意的地方就是this的使用,this指代的就是这个类。
无参构造和有参构造的区别
alt+insert是idea快速写构造函数一键生成
一旦定义了有参构造,实例化的时候用了无参构造,必须显示的定义无参构造;如下图:
构造函数的总结
创建对象内存分析
面向对象三大特性
一、封装
二、继承
单继承—只能继承多个父类,不能继承多个父类。
1)、object类
在JAVA中,所有的类都默认直接或者间接继承Object。
2)、super详解
super这里可以和this进行对比
这里是方法的调用对比
构造器的调用对比
只要写了有参构造以后,无参构造就没有了。父类没有无参构造,就无法调用无参构造,这个时候子类就只能调用有参构造。
总结:
3)、方法重写(重写都是方法的重写,与属性无关)
静态方法和非静态方法有区别,而重写只和非静态方法有关,而且重写的方法只能是public,不能是私有的。
下面是静态的方法,不能算重写。
下面这个非静态方法才叫重写:
三、多态
首先Student是Person的子类,eat()是子类独有的方法,父类定义出来的对象是不可以用的。
这里强制转换之后就可以调用了
instanceof和类型转换
instanceof 通过返回一个布尔值来指出,某个对象是否是某个特定类或者是该特定类的子类的一个实例。
static关键字详解
类名就可以直接调用关键字修饰的东西,但是不加static修饰的方法需要实例化进行调用。
这里需要注意的是静态方法块只执行一次,后面均不会再进行执行。
抽象类和接口
一、抽象类
二、接口
首先要将接口定义出来,把接口这些东西都写好。
然后接口用多继承进行实现。