面向对象和面向过程的区别
什么是面向对象
方法的调用
静态方法
非静态方法
加与不加static的区别
创建对象,new Student()就创建了对象,然后赋给xiaomingzhege对象
构造器(构造方法)
一个类即使什么都不写,它也会存在一个方法
有参和无参构造
new的本质是在调用构造器
一旦定义了有参构造,无参构造就必须显式定义。
alt+insert快捷键生成构造器
解释:方法或者变量名在栈区,实例的对象在堆区,类和静态在方法区。
引用就是除了8大基本类型外的数据类型统统默认为null
继承
extends 扩展的意思,子类是父类的扩展。
JAVA中的继承只能单继承,不能多继承
学生类继承了人类
可以将属性设为private私有的,利用set/get操作
鼠标点在类里面,然后ctrl+h 打开继承树
JAVA中所有的类的直接或间接的继承Object
如图是直接继承
super
super是父类
私有的无法被继承,实际是继承了不能访问。
子类构造器实际隐含父类构造器super();
定义一个子类对象时,先调用父类构造器,再调用子类构造器。
super调用父类的构造方法,必须在构造方法的第一个。
重写
不能重写父类的属性,只能重写父辈的方法。
重写要求
1.方法名必须相同
2.参数列表必须相同,(重载是同一个方法里且参数列表不相等等。)
3.修饰符:范围可以扩大,例如父类是protected ,子类可以是public
范围public>protected>default>private
4.抛出的异常,范围可以被缩小,但不能被扩大,ClassNotFoundException(较小范围的异常)–>Exception(大范围的异常)
为啥需要重写!
父类的功能子类不一定需要,或者不一定满足,故需要重写。
重写快捷键AIt+Insert :overide
静态方法(含static),注意结果输出区别,这个不算重写。
非静态的才叫重写
多态
多态是方法的多态,属性没有多态。
父类不能调用子类独有的方法,子类重写过的方法,父类调用该方法时要用子类的方法。
三种条件下不能重写,
含有:
1.static 方法,属于类,但不属于实例
2.final 常量
3.private 方法
instanceof
instanceof是Java的一个保留关键字,左边是对象,右边是类,返回类型是Boolean类型。它的具体作用是测试左边的对象是否是右边类或者该类的子类创建的实例对象,是,则返回true,否则返回false
static关键字详解
静态代码块只执行一次,
静态代码块先执行,匿名代码块在执行,最后构造器(构造方法)再执行。
静态导入包,可以使得以后不用再写Math.random()中的Math
抽象类
抽象类
继承抽象类的子类要把抽象类的所有方法实现,除非这个类还是抽象类。
抽象类的特点,
1、抽象类不能被new,只能靠子类去实现它。
2、抽象类中可以不写抽象方法,写普通的方法。
3、抽象方法必须在抽象类中。
接口
声明类的关键字是class,声明接口的关键字是interface。
接口只有规范
接口中所有定义的方法其实都是抽象的
例:public abstract。
接口里定义常量就是静态的常量
接口都要有实现类
实现接口的类需要重写接口中的方法。
利用接口可以实现多继承
接口不能被实例化,因为接口中没有构造方法
内部类
通过外部类来实例化内部类
一个java文件中可以有多个class类,但只能有一个public class类
方法里的变量是局部变量,方法里的类是局部内部类