本质:以类的方式组织代码,以对象的组织封装数据
特点:封装、继承、多态
静态方法不能调用动态方法(静态方法和类一起加载,动态方法是类实例化后才存在的)
类的创建
类实例化后会产生一个自己的对象,可以有很多个
构造器
一个类中即使没有方法也有一个构造器 实列化初始值
使用new关键字是必须有构造器(本质就是调用构造器)
一旦定义了有参构造器,无参构造必须显示
创建对象的内存分析
-
先走main方法
-
在栈里面创建对象,有多少个对象就创建多少个
-
对象的属性和方法都放在堆内存中,默认是空
-
常量放在常量池中
-
方法放在方法池中
-
方法区隶属于堆内存
封装
定义:应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问(数据隐藏)
属性私有(get/set)
就是对于方法和属性进行私有化,再用get/set取出来
用处:提高安全性,提高可维护性
继承
私用的东西不能继承
super
调用父类的属性或方法
调父类的构造器必须放在子类的第一行
调动父类构造器必须放在子类构造器的第一行
this
输出当前类的方法或属性
super和this不能同时调用构造方法
方法的重写
子类继承了父类的方法后对父类的方法进行修改
重写只会发生在非静态的方法中并且发生继承(没有static)
方法名一样、参数列表一样、修饰符(可以扩大不能所需public、protected、default、private)
异常的范围可以缩小不能扩大
多态
一个对象的实际类型是确定的但是指向的引用类型是不确定的
对象能执行哪些方法,主要考创建对象的左边的类型是否有该方法,与右边的关系不大
条件:继承、方法重写、父类引用指向的是子类
instanceof和类型转换
-
instanceof判断两个类是否有父子关系 返回的值是true和false 左右两边要有关系
-
子类转换成父类可能会丢失一些方法
static
在当前类中可以直接调用方法可以不用创建对象
abstract抽象类
-
抽象类的所有方法,继承了它的字类都必须实现它的方法
-
类是单继承,接口可以多继承
-
不能new这个抽象类,只能让子类去实现
-
抽象类可以写普通方法,抽象方法必须在抽象类中
-
①在接口中 不可以有构造方法
在接口里写入构造方法时,编译器提示:Interfaces cannot have constructors。
A. 构造方法用于初始化成员变量,但是接口成员变量是常量,无需修改。接口是一种规范,被调用时,主要关注的是里边的方法,而方法是不需要初始化的,
B. 类可以实现多个接口,若多个接口都有自己的构造器,则不好决定构造器链的调用次序
C. 构造器是属于类自己的,不能继承。因为是纯虚的,接口不需要构造器。
接口
-
接口里面的方发默认是public abstract
-
接口都需要有实现的类
-
用Implements继承接口
-
实现了类必须重写接口里面的方法
-
接口里面的属性默认是public static final
作用
-
约束
-
定义方法,让不同的人实现
-
接口不能实例化,因为灭有构造方法(不能创建对象)
内部类
一个类里面可以有多个class但是只能有一个public class
成员内部类
通过外部类定义内部类
可以获得外部类的私有属性
静态内部类
-
-
加了一个static就是静态内部类
局部内部类
就是在方法里面写一个类
浙公网安备 33010602011771号