1 继承
特点:
1 继承要有一定的层次结构,而且还要具备一定的可传递性。
2 子类继承了父类中的所有的属性和方法,但是私有属性和方法除外。
3 子类拥有从父类继承过来的属性和方法外,子类也可以拥有自己的属性和方法。
4 在java中只支持单一继承(也就是说一个子类只能继承一个父类,但是一个父类可以继承多个子类)。
5 判断两个雷的继承关系是否成立,可以通过“is-a”(译名:是一个)来判断。
父类等同于:基类,根类,超类。
在java中通过extends 关键字来实现继承,语法:【访问修辞符】class 子类 extends 父类{}
继承的作用:
提高代码的重用性。
一个源文件中,可以包含多个类,而且只能有一个类带public,而且带public访问修饰的类要和文件类名相同,还要把
慢方法写在带public的类中。main方法。
当创建子类对象时,那么一定会先执行父类的构造方法创建的对象,然后再调用子类的构造方法创建的对象。而且在
创建子类对象时,无论是有参数还是无参数的构造方法,jvm都只会默认父类中无参数的构造方法创建的父类对象。
2 super关键字
作用:super关键字表示对当前父类对象的引用(也就是说super表示的是父类对象的引用)。
位置:super关键字只能出现在继承关系的子类中。
用法一:
父类中的成员属性和普通方法;
super.属性名;
super.方法名(参数列表);
用法二:当super关键字以super(参数列表)的形式出现在子类构造方法的第一句代码时,就明确的告诉jvm按照super关键字指定的父类
构造方法创建父类的对象。
3. object 类
java.lang.object类是所有java累的父类。
如果一个没有明确的通过extends关键字指明父类,则默认就继承自object类。// object是祖宗类,默认就是object的功能 //
4.访问修饰符
private:私有的,可以修饰成员变量和方法。只有本类可见。
默认:可以修饰成员变量、方法。本包、本类可见。// package
protected:收保护的,可以修饰成员变量和方法。本类、本包、子类可见。//package 、import、extends
public:公有的,可以修饰成员变量,方法和类。一切皆可见。//无敌
注意: 属性用private来修饰的 类 和 方法 可以用默认或者public来修饰。
5 final 关键字
a.final修饰变量等同于常量,一旦赋值就无法更改。【无论成员属性或者局部属性常量,在定义时都要初始化。】
b. final修饰的方法中的参数,称为最终参数,在方法体中同样不能给最终参数重新赋值。
c. final修饰的方法不能被重写。
d. final修饰的类,不能被继承。
6 方法重写
方法重载和方法重写都是多态的表现。
方法重写只能够发生在继续关系的子类中,是子类重写父类的方法。
目的:
当父类方法无法满足子类的需求时,那么子类可以对父类方法进行改造或者扩展。
定义:
子类重写父类的方法,要和父类的方法名称、参数列表、返回值类型等完全一致,而且访问修饰符的范围不能缩小。
7 向上转型和向下转型
向上转型:
把子类的对象赋值给父类,就可以把该对象‘【当做父类对象来用】。’
动态绑定机制:
在程序运行期间,会根据对象的真正创建者来决定调用那个方法。
发生动态绑定机制的条件:
1继承
2重写
3向上转型
4用向上转型的对象调用被子类重写的方法。
向下转型:
把一个父类对象赋值给某个子类,需要加上强制转换符。【向下转型一定是在向上转型的基础上,做类型的还原】
可以通过instenceof关键字来判断某个对象是否属于某个类。语法:
对象 instenceof 类名、 对象 空格 instenceof 空格 类名
8方法的递归
方法本身调用本身的过程就是方法的递归。
9 static关键字
static可以修饰属性、方法、代码块。
【没有 被static修饰的成员属性或方法都属于对象,也叫做实例属性或实例方法。】
用法:
static修饰的属性或方法名都可以通过:类名.属性名或类名.方法名来调用。静态的属性或者方法可以直接调用;不用非静态对象来实现。
没有static来修饰的属性或者方法只能通过对象来调用,实现。
静态属性:
无论创建多少个对象,静态属性只能有一个副本。
静态方法:[访问修饰符]空格static返回值类型方法名(参数列表){ };
特点:
1。静态方法中只能访问静态属性和方法。(包括成员属性)
2。在非静态方法中,即可以访问非静态的方法;也可以访问静态的方法和属性。
3。在静态方法中,不能使用this和super关键字,因为this和super表示的是对对象的引用。而static修饰的方法属于类,
所以在语法上存在冲突。
静态代码块:
静态代码块只能出现在类的内部,任何方法的外部。
语法:
static{
}
作用:
给静态的成员属性进行初始化。
10 抽象类
定义:
当一个类中,没有足够的信息去描述一个具体的事物时,这个类就是抽象类。
语法:
[访问修饰符] abstract class 类名{
}
特点:
1抽象类不能被实例化。(也就是说抽象类不能创建对象)
2抽象类可以拥有构造方法。
3抽象类中可以声明实例变量、也可以声明静态变量;也可以存在普通方法、或静态方法。
4抽象类中还可以存在抽象类方法:[访问修饰符] abstract 返回值类型 方法名(参数列表);
5抽象类中的抽象方法,由抽象类中的子类来实现。
6如果一个类是抽象类,那么这个类不一定有抽象方法,但是如果一个类中有一个抽象方法,那么这个类一定是抽象类。
7如果抽象类的子类没有把抽象类中的所有方法实现,则子类也需要定义成抽象的,由子类的子类负责实现剩下的。
【记住以上7条,则抽象类成矣!】
11 接口类
接口就是对外提供了一系列的功能声明。(也就是说在接口中,定义的方法只能有方法的声明没有方法体)
创建接口的语法:
[访问修饰符] interface 接口名{ }
接口特点:
1 接口中声明的方法没有方法体,只能有方法的声明。例:public void display(参数列表);没有大括号。
2 接口中声明的成员属性都是静态的而且是不可变的,因为接口中的成员属性默认的都是public static final 属性名 来修饰的。
3接口中没有构造方法,也不能被实例化。
4接口可以实现多继承,接口类名之间可以用逗号隔开。
5接口中的方法只能被public来修饰,就算没有明确声明访问符,默认的也是public。
接口是一种特殊的类。它可以同过implements来实现。
语法:
[访问修饰符] class implements 接口1,接口2,接口3{ }
说明:
1 由类来实现接口,而且一个类可以同时实现多个接口,接口之间用逗号隔开。
2 如果一个类实现了某个接口,就要实现接口中的所有方法,否则当前类就需要定义成抽象类,由抽象类的子类来实现。
3 实现接口的类中,可以通过类名 点 属性名或者直接输出接口中的属性。
4 实现接口也是一中特殊的继承。