一、知识点
1.1 继承
1.2 抽象类
1.3 接口
1.4 多态
二、具体内容
举个例子:人类,有姓名,年龄的属性和说话的方法
学生类,姓名、年龄、学号的属性和说话、考试的方法
Strudent类比Person类多了学好的属性和考试的方法
public class Student extends Person{
private String stuNo;
public String getStuNo(){
return stuNo;
}
public String setStuNo(String stuNo){
this.stuNo=stuNo;
}
public void test(){
}
}
继承的功能:
通过继承可以简化子类的定义
通过继承可以扩展子类的功能
继承具有层次结构
子类可以继承父类的一切非私有的属性和方法,子类扩展了父类的功能,同时把父类一切非私有的属性全部都继承了下来
继承的规定:
java只支持单继承//不能extends perosn,anotherPerson
java允许多层继承:
在实例化子类对象的时候,会先调用父类的构造方法再调用子类的构造方法,调用父类的构造方法就是为了给子类对象开辟空间,并且可以为类中的属性初始化值。
讲一下this,和super关键字的区别,this本类中的对象属性和方法,super父类中的对象和属性和方法,具体区别如图
序号 |
this |
super |
1调用属性 |
调用本类属性 |
调用父类属性 |
2调用方法 |
调用本类方法 |
调用父类方法 |
3调用构造方法 |
调用本来构造方法 |
调用父类构造方法 |
4表示对象 |
表示当前类对象 |
表示的父类的对象 |
重点,方法覆写和重载的区别
在继承关系中子类复写父类的方法,实现不同的功能,叫做方法的复写,在复写之后子类调用的永远都是子类复写之后的方法,子类复写之后的方法权限不能小于父类被复写方法的访问权限
序号 |
覆写 |
重载 |
1概念 |
方法名称一样,访问权限大于或等于父类被复写方法的权限,参数相同,返回值类型相同 |
方法名称相同,返回的参数的个数,类型,顺序不同 |
2使用范围 |
在继承关系中 |
在同一个类中 |
重点,抽象类和接口
相同:都不能直接实例化
不同:抽象类包含抽象方法,一般方法、常量、变量、可以有构造、抽象类可以实现接口、只能单继承
接口只有抽象方法和常量、不能有构造、不能继承抽象类、可以多继承实现
抽象类 |
接口 |
|
相似 |
不能直接实例化 |
|
不同 |
包含抽象方法,一般方法,常量,变量 |
只有抽象方法和常量 |
可以有构造方法 |
不能有构造方法 |
|
抽象类可以实现接口 |
接口不能继承抽象类 |
|
单继承的局限 |
多继承多实现 |
重点,多态
方法的重载和覆写是面向对象多态性的一个体现
抽象类的子类对象可以作为抽象类对象使用
接口的实现类对象可以作为接口的对象使用
/**
* 抽象类
* @author Administrator
*
*/
public abstract class SSEPTMOKE {
void smoking();//抽象方法
}
public class OopDemo02 {
public static void main(String[] args) {
SMOKE smoke = new SEPTSMOKE();//子类对象作为父类对象使用
smoke.smoking();
A a = new AImp();//实现类对象作为接口对象使用
}
}