目录
类(class)
this关键字:表示当前类的对象,在类被创建时自动产生,可以调用本类的属性,方法,构造方法。
类的对象的创建过程:开辟空间,实例化成员变量,执行构造方法,并将创建的对象赋值给对象名
封装
隐藏对象内部实现细节,控制对象的访问与修改权限,比如JavaBean设计模式,利用set(属性修改器)与get(属性访问器)方法限制属性的控制,并且,用作JavaBean的类必须具有一个公共的、无参数的构造方法。
继承(extends)
在类中,类与类之间属性和方法的赠与和获得被称为继承。
具体做法是找到共性特征与相似行为,定义在父类中,实现重用,减少代码冗余,提高代码复用率。
当父类中的方法不能完全满足子类的需求时,可以对其进行重写。
继承后对象的创建过程:先创建父类对象,实例化父类成员变量,执行父类构造方法,在创建子类对象,实例化子类成员变量,执行子类构造方法
一个子类只能有一个父类,java中最大的父类是Object,没有写明extends的类,均继承于Object。
super关键字可以调用父类的属性,方法,构造函数。
父类中不能被继承的东西:
父类的构造方法(但是在子类的构造中可以调用父类的构造)
父类的私有方法
父类中使用默认修饰符修饰的方法与属性在不同包的子类无法继承
不同访问修饰符能否被继承权限:
访问修饰符 | 本类 | 本包(不同类) | 不同包子类 | 其他 |
private | 1 | |||
public | 1 | 1 | 1 | 1 |
protected | 1 | 1 | 1 | |
default默认(可以不写) | 1 | 1 |
多态
形成多态的条件:
存在继承或实现关系的两个类,
基类引用指向派生类对象(父类引用指向子类对象)
子类中存在对父类方法的重写
写法:父类 变量名 = new 子类( )
针对这个等式,对于变量:编译运行看左边,对于方法:编译看左,运行看右
多态情况下的访问特点:
存在同名变量时,访问父类成员变量。
存在同名的非静态方法时,访问子类中重写的方法。
存在同名的静态变量与静态方法时,访问父类的静态变量和静态方法。
不能访问子类独有的方法。
引用类型转换
当我们想在多态的情况下访问子类的独有方法时,可以通过向下转型。
首先,多态就是一种向上转型:父类 变量名 = new 子类( )
那么,向下转型的写法应该是:子类 新变量名 = (子类) 变量名
这样就可以用新的对象来调用子类独有的方法了
向下转型的问题:
当一个父类有多个子类,子类a的向上转型,是否可以向下转型成子类b?
答案是不可以,类型转换错误。
所以在进行向下转型时,可以利用 instanceof 关键字来判断该数据的类型
用法:变量名 instanceof 数据类型 (属于则返回true,不属于返回false)