java基础面向对象继承和多态
2014-10-20 10:52
204 查看
继承(掌握)
(1)继承:在java中,我们在定义一个类的时候,可以不用全部定义类中的内容,
通过继承把其他类的非私有功能可以直接拥有。(了解)
(2)父类:被继承的类。(超类,基类)(了解)
子类:继承其他类的类。(派生类)
(3)继承的好处:(掌握)
A:提高代码的复用性。
B:让类与类之间产生了关系,是多态的前提。
(4)使用继承:(掌握)
格式:
class 类A extends 类B{}
什么使用时候继承呢?
假设判断法。
继承是:"is a"的关系 "x is a y"
(5)特点:(掌握)
A:java只支持单继承
B:java可以支持多重(层)继承
(6)研究的是继承的成员关系:
A:成员变量
在子类中使用一个变量的时候:
首先在局部范围内找,如果有就使用。
否则,在子类中找,如果有就使用。
否则,在父类中找,如果有就使用。
否则,就报错。
this和super的区别?
this():表示调用本类的构造方法
super():表示调用父类的构造方法
this.成员变量:表示调用本类的成员变量
super.成员变量:表示调用父类的成员变量
this.成员方法:表示调用本类的成员方法
super.成员方法:表示调用父类的成员方法
最常见的用法:
this用于区分局部变量和成员变量
super用于区分子类和父类相同名称的变量
B:成员方法
在子类中使用一个方法的时候:
首先,在子类中找,如果有就使用。
否则,在父类中找,如果有就使用。
否则,就报错。
子父类同名的方法,在java中被称为方法重写。
要求:方法声明相同。
子类的修饰符权限要大于等于父类的权限。
不能重写父类的私有方法。
重写和重载的区别?(面试题)
相同点:多个类中的方法名要一样,修饰符要一样,
区别:级别差异 重写有父子类 类和类之间
重载是类中的多个方法,属于平级关系,
用法 重写用在继承和多态
重载用在封装方法中
重写是父类和子类的方法名一样,
重载是多个方法名一样,完成功能一样,参数类型和参数长度不用
C:构造方法
在创建子类对象的时候,会去创建父类的对象。
因为在子类的构造方法中,默认第一条语句有一个super()。
假如父类没有无参构造,那么怎么解决呢?
a:通过super调用父类的其他构造
b:通过this调用本类的其他构造。
一般我建议把无参构造方法自己给出。
(7)综合案例
ExtendsTest自己在分析一遍。
2:final关键字(掌握)
(1)final是最终的意思,可以用于修饰类,修饰方法,修饰变量
(2)特点:(掌握)
它修饰的类不能被继承
它修饰的方法不能被重写
它修饰的变量是常量
(3)什么时候用?
那得看你不想让别人做什么。视情况而定。
3:多态(重点)
(1)多态:就是对象在不同时刻代表的不同状态。
举例:
水(水蒸气,水,冰)
(2)多态的前提:(重点)
A:有继承关系
B:有方法的重写
C:有父类引用指向子类对象
举例:
class Fu{ public void show(){sop("Fu")} }
class Zi extends Fu{ public void show(){sop("zi")} }
多态:
Fu f = new Zi();
(3)多态的好处:(重点)
A:提高了代码的后期的维护性
B:提高了代码的后期的扩展性
弊端:只能使用父类中定义过的方法。子类特有方法不能使用。
(4)多态研究的内容(对象):(重点)
A:成员变量:
编译看左边,执行看左边
B:成员方法:
编译看左边,执行看右边
C:静态修饰成员:
编译看左边,执行看左边
注意:跟对象无关,也可以说不能算作多态的内容。
静态修饰的东西。
向上转型:为了多态使用对象
向下转型:为了使用对象的特殊功能
举例:
孔子爹:
年龄:40
功能:教书("JavaSE")
孔子:
年龄:20
功能:教书("论语")
玩游戏();
想符合多态:
孔子爹 k爹 = new 孔子(); //多态,向上转型。穿上爹的衣服,带上爹的眼镜。装爹。
sop(k爹.age); //40
k爹.教书(); //论语
//k爹.玩游戏(); //报错
//下班了
孔子 k = (孔子)k爹; //回家了,脱去爹的衣服,摘下眼镜,回到自己。向先转型。
k.教书(); //论语
k.玩游戏();
sop(k.age); //20
我们在分析和实际写出的时候,到底是先写父还是先写子。
分析:
通过子类不断的向上抽取,抽取共性的东西。
实际写:
先写父,在写子。
(1)继承:在java中,我们在定义一个类的时候,可以不用全部定义类中的内容,
通过继承把其他类的非私有功能可以直接拥有。(了解)
(2)父类:被继承的类。(超类,基类)(了解)
子类:继承其他类的类。(派生类)
(3)继承的好处:(掌握)
A:提高代码的复用性。
B:让类与类之间产生了关系,是多态的前提。
(4)使用继承:(掌握)
格式:
class 类A extends 类B{}
什么使用时候继承呢?
假设判断法。
继承是:"is a"的关系 "x is a y"
(5)特点:(掌握)
A:java只支持单继承
B:java可以支持多重(层)继承
(6)研究的是继承的成员关系:
A:成员变量
在子类中使用一个变量的时候:
首先在局部范围内找,如果有就使用。
否则,在子类中找,如果有就使用。
否则,在父类中找,如果有就使用。
否则,就报错。
this和super的区别?
this():表示调用本类的构造方法
super():表示调用父类的构造方法
this.成员变量:表示调用本类的成员变量
super.成员变量:表示调用父类的成员变量
this.成员方法:表示调用本类的成员方法
super.成员方法:表示调用父类的成员方法
最常见的用法:
this用于区分局部变量和成员变量
super用于区分子类和父类相同名称的变量
B:成员方法
在子类中使用一个方法的时候:
首先,在子类中找,如果有就使用。
否则,在父类中找,如果有就使用。
否则,就报错。
子父类同名的方法,在java中被称为方法重写。
要求:方法声明相同。
子类的修饰符权限要大于等于父类的权限。
不能重写父类的私有方法。
重写和重载的区别?(面试题)
相同点:多个类中的方法名要一样,修饰符要一样,
区别:级别差异 重写有父子类 类和类之间
重载是类中的多个方法,属于平级关系,
用法 重写用在继承和多态
重载用在封装方法中
重写是父类和子类的方法名一样,
重载是多个方法名一样,完成功能一样,参数类型和参数长度不用
C:构造方法
在创建子类对象的时候,会去创建父类的对象。
因为在子类的构造方法中,默认第一条语句有一个super()。
假如父类没有无参构造,那么怎么解决呢?
a:通过super调用父类的其他构造
b:通过this调用本类的其他构造。
一般我建议把无参构造方法自己给出。
(7)综合案例
ExtendsTest自己在分析一遍。
2:final关键字(掌握)
(1)final是最终的意思,可以用于修饰类,修饰方法,修饰变量
(2)特点:(掌握)
它修饰的类不能被继承
它修饰的方法不能被重写
它修饰的变量是常量
(3)什么时候用?
那得看你不想让别人做什么。视情况而定。
3:多态(重点)
(1)多态:就是对象在不同时刻代表的不同状态。
举例:
水(水蒸气,水,冰)
(2)多态的前提:(重点)
A:有继承关系
B:有方法的重写
C:有父类引用指向子类对象
举例:
class Fu{ public void show(){sop("Fu")} }
class Zi extends Fu{ public void show(){sop("zi")} }
多态:
Fu f = new Zi();
(3)多态的好处:(重点)
A:提高了代码的后期的维护性
B:提高了代码的后期的扩展性
弊端:只能使用父类中定义过的方法。子类特有方法不能使用。
(4)多态研究的内容(对象):(重点)
A:成员变量:
编译看左边,执行看左边
B:成员方法:
编译看左边,执行看右边
C:静态修饰成员:
编译看左边,执行看左边
注意:跟对象无关,也可以说不能算作多态的内容。
静态修饰的东西。
向上转型:为了多态使用对象
向下转型:为了使用对象的特殊功能
举例:
孔子爹:
年龄:40
功能:教书("JavaSE")
孔子:
年龄:20
功能:教书("论语")
玩游戏();
想符合多态:
孔子爹 k爹 = new 孔子(); //多态,向上转型。穿上爹的衣服,带上爹的眼镜。装爹。
sop(k爹.age); //40
k爹.教书(); //论语
//k爹.玩游戏(); //报错
//下班了
孔子 k = (孔子)k爹; //回家了,脱去爹的衣服,摘下眼镜,回到自己。向先转型。
k.教书(); //论语
k.玩游戏();
sop(k.age); //20
我们在分析和实际写出的时候,到底是先写父还是先写子。
分析:
通过子类不断的向上抽取,抽取共性的东西。
实际写:
先写父,在写子。
相关文章推荐
- Java基础笔记 – 面向对象三个特征 继承、封装、多态及编程细节提示
- 黑马程序员---java基础之面向对象(一)三大特征(封装,继承,多态)
- 黑马程序员——Java基础——面向对象(继承、接口、多态)
- 黑马程序员-17-java基础-面向对象(3)-继承、抽象类、接口与多态
- JAVA初等基础__(面向对象三个特征, 封装,继承,多态)
- Java基础-面向对象(封装、继承、多态)
- 黑马程序员----Java基础之面向对象(封装 继承 多态)(二)
- Java学习之旅基础知识篇:面向对象之封装、继承及多态
- Java基础——面向对象——继承、抽象类、接口、多态、包、内部类、异常等
- 黑马程序员-java基础(四)-面向对象(封装、继承、多态)
- Java基础-->面向对象<继承,内部类,多态,包,抽象与接口>
- Java 基础(三) 继承 多态 -------面向对象的特殊性能
- Java基础——面向对象(封装、继承、多态)
- Java基础知识:面向对象-封装、继承、多态
- 黑马程序员_毕向东JAVA基础_面向对象(封装&继承&多态)
- 黑马程序员——Java基础---深入理解面向对象(封装继承和多态)
- 黑马程序员----Java基础之面向对象(封装 继承 多态)
- 黑马程序员 Java基础 面向对象:继承、final关键字、抽象类、模版方法模式、接口、多态、Object类
- 黑马程序员——Java基础---面向对象(封装、继承、多态)
- 黑马程序员——Java基础---面向对象(继承、多态、抽象类、接口、内部类)