前言:为了大家更好的学习,我尽量采用图文和代码的形式为大家详细而又简单的讲解,与你相遇倍感荣幸,因为成长历程需要你我一起见证,欢迎大家一起讨论
关键字:
super:
1. 用于调用父类的构造函数;
2. super()意为不带参数的构造方法;super(a)意为带参数的构造方法
3. super必须用子类构造带的第一行;
this:
1. 代表本类对象的一个引用,谁调用this所在的方法,this就代表谁;
2. 使用场景:
2.1用于区同名成员变量和局部变量;
2.2在定义函数时,该函数要用到调用函数的对象时,因为此时对象还没有建立故此时this代表此对象;
2.3构造函数调用,这个时候this参数必须作为第一条语句存在;
final
1. 最终类型,用于修饰类方法和变量;
2. Final修饰类不能被继承,!!-》父类的private成员方法是不能被子类方法覆盖的因为private类型的方法默认为final类型;
3. Final修饰的方法不能被重写;
4. Final修饰的变量是一个常量,只能被复制一次;
5. 内部类只能访问final修饰的局部变量
6. Final不能用于修饰构造方法
Static
作用:用来修饰成员变量和成员函数;
静态的特点:
1. 随着类的加载而加载;
2. 由于对像先存在;
3. 对所有对象所共享,可以直接被类型调用;
静态的注意事项:
1. 静态方法只能访问静态成员,原因(静态内容随着类加载而加载,他是先进内存)
2. 静态方法中不能使用this,super关键字;
3. 主方法是静态的
a) static 由于jvm调用main方法的时候,没有创建对像,只能通过类名调用;
b) void 由于main方法时被JVM调用,不需要返回值;
静态变量和成员变量的区别:
调用方式:
1.静态变量也称为类变量,可以直接通过类名调用,也可以通过对象名调用;这个变量属于类;
2.成员变量也称为实例变量,只能通过对象名调用;
3.储存位置:静态变量储存在静态块;
4.生命周期:静态块随着类存在消亡;成员随对象;
静态变量的优势与劣势:
优势:对对象的共享数据进行单独空间存储,减少内存开销;直接被类名调用
劣势:生命周期过长,随着类的消失而消失;访问权限死板,只能访问静态;
静态使用:
当所有对象共享某个数据的时候,就把这个成员定义为静态修饰变量;
当某个方法没有访问该类中的非静态成员,就把这个方法定义为静态修饰;
静态代码块:
它只执行一次,比main代码先执行,
执行顺序:静态代码块,构造代码块,构造方法;
抽象类:
概念:
a) 多个类有相同的方法声明,但是方法体不一样,这个时候,我们把方法声明进行抽取;
b) 让子类继承后,自己去实现方法体,没有方法体的方法;我们需要用抽象的关键字abstract抽象标志;
特点:
a) 抽象类和抽象方法都要用abstract修饰得方法修饰
b) 抽象类不能被实例化;
c) 抽象类不一定有抽象方法,但是有抽象方法一定 是抽象类
抽象类中数据的特点;
a) 抽象类中有变量也可以有常量;
b) 抽象类中可以有抽象方法也可以有非抽象方法;
c) 抽象类是一 个类所以他有构造方法;
抽象类中的问题:
a) 抽象类中是否有抽象方法?能不能被实例化?如果不能为什么有构造方法?
i. 抽象类有构造方法;
ii. 抽象类不能被实例话;
iii. 抽象化中的构造方法供子类实例化调用;
b) 抽象关键字abstract 不可以呵那些关键字共存
i. private :是由于子类继承不到,所以不能被重写,但是abstract 修饰的方法不能被重写
ii. static :如果一个抽象类通过static修饰,这个方法就可以通过类名直接调用,但是抽象方法是没有实体,所以这样可写是没有意义的;
c) 抽象类可以没有抽象方法嘛?如果可以这样的类有用吗?
i. 抽象方法可以没有方法;
ii. 没有抽象方法的作用是为了不让别人建立改抽象类的对象;
接口:
概念
当一个类中的方法都是抽象的时候,Java提供了另外一种方式;叫接口 用interface关键字表示,类与接口关系用implements表示
成员特点:
a) 成员变量:是常量,默认修饰public static final;
b) 成员方法:都是抽象的,默认修饰为public abstrat;
关系:
a) 类与类的关系: 都是抽象的,默认修饰为public abstra;
b) 类与接口的关系:
i. 是实现类的关系。类可以多实现接口,使用implements
ii. 类在继承时,可以实现多个接口
特点:
a) 是对外暴露的规则;
b) 是功能的扩展;
c) 接口的出现降低了耦合性;
d) 接口可以多实现;
与抽象类的区别:
a)
i. 抽象只能被单继承;
ii. 接口可以多实现,避免了继承的局限型;
b)
i. 抽象类的数据特点:
1. 成员变量可以是常量也可以说变量;
2. 成员方法可以是abstract 也可以是非abstract;
3. 有构造方法
ii. 接口的数据特点:
1. 成员是常量:默认修饰public static final;
2. 成语方法:都是抽象方法。都有默认修饰 public abstract
3. 没有构造方法
c)
i. 抽象类中定义的是继承体系中的共性功能;
ii. 接口中定义的是继承体系中的扩展功能;
d)
i. 抽象类被继承的是is a 关系:xx是yy的一种;
ii. 接口被实现是like a关系:xx像是yy的一种;