this关键字用法:
表示当前对象的引用,即调用成员属性和方法时,表示当前正在调用的对象
调用其他构造方法(必须放在第一行);
super关键字
指向自己(直接)父类对象的一个指针,可以调用父类的成员属性和方法
调用父类中的某一个构造函数
面向对象三大特征:
继承
继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。
子类拥有父类非private的属性和方法
JAVA不支持多继承,继承关系是传递的
父类是子类的一般化,子类是父类的特殊化(具体化)
封装
属性描述事物的特征,方法描述事物的动作
首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系
多态
方法的重写、重载与动态连接构成多态性;
对于父类中定义的方法,如果子类中重写了该方法,那么父类类型的引用将会调用子类中的这个方法,这就是动态连接。
向上转型(父类对象的引用指向子类对象);向下转型(将父类对象的引用强转成子类类型)
访问权限修饰符:
public : 相同包下和不同包下的类都能访问
protect: 相同包下能类访问,子类能访问
default: 相同包下的类能访问,子类不能访问
private: 其他类都不能访问
static修饰符
static修饰的内容是隶属于类,而不是直接隶属于对象的
随着所在类的加载而加载,优先于对象的存在
satic修饰的成员被该类型的所有对象所共享
可以直接使用类名访问static成员
final修饰符
被final修饰的值不能修改,方法不能重写,类不能继承
final修饰变量后导致的“宏替换”/"宏变量"问题(在编译期final变量能够直接被其本身的值所替换)
引用变量指向的是实际的对象,但其存储的是所指向对象的地址,因此,其值不能修改并不意味着其所指向的对象不能修改
abstract修饰符:修饰类和方法
abstract修饰类,会使这个类成为一个抽象类,这个类将不能生成对象实例
abstract修饰方法,会使这个方法变成抽象方法,也就是只有声明而没有实现,需要子类继承实现。
接口(interface)
接口没有构造方法
接口支持多继承
接口中的方法会被隐式的指定为 public abstract
接口中的变量会被隐式的指定为 public static final
内部类:
局部内部类
定义方法中,只能使用方法中声明为final类型的变量。
匿名内部类
没有类名,没有class关键字也没有extends和implements等关键字修饰。
会隐式地继承一个父类或实现一个接口。
静态内部类
只能访问外部类的静态成员变量与静态方法。
声明方法:(在类中)
public static class InnerClass
生成方法:
OuterClass.InnerClass inner = new OuterClass.InnerClass();
成员内部类
可以访问外部类的静态与非静态的方法和成员变量。
声明方法:(在类中)
public class InnerClass
生成方法:
OuterClass.InnerClass inner = new OuterClass().new InnerClass();