------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
多态: 一种事物的多种形态
H2o液态: 水, 雨, 雾,露水,水蒸汽
气态: 水蒸气
固定: 冰, 雪, 霜, 雹子
水果:
苹果 ,西瓜,香蕉
人:
男人 ,女人 ,白人 ,黑人
动物:
猫,狗,羊 雍和宫 52号烤羊腿
多态的前提条件 :
1.满足继承关系
2.方法重写
3.父类引用指向子类对象
例子: //子类引用指向子类对象
Zi z = new Zi();
//父类引用指向父类对象
Fu f = new Fu();
//父类引用指向子类对象
Fu f = new Zi();
成员变量:
编译看左边,运行看左边
成员方法:
编译看左边,运行看右边
构造方法:
编译看左边,运行看左边
静态方法:
编译看左边,运行看左边
多态案例:
复联2
世界陷入了长期和平.
托尼.斯塔克 -- 开厂
跟人合影赚钱.5块钱
我:这是谁啊?
他:我啊,斯塔克.
我:你干嘛呢?
他:合影5块
---------------------------
救命啊~~~
我得救人,我变身,钢铁侠
飞
救人
定义人类 {
//姓名
//挣钱
getMoney(){
syso("开厂子");
}
}
定义钢铁侠类 extends 人类{
//姓名
//挣钱
getMoney(){
syso("合影");
}
}
向下转型,从父到子
Person p = new IronMan()
格式:子类类型 变量名 = (子类类型) 父类变量名;
IronMan im = (IronMan) p;
*/
class PersonTest{
public static void main(String[] args){
System.out.println("我:这是谁啊?");
// 多态创建对象 ,父类引用指向子类对象
Person p = new IronMan();
System.out.println("他:我啊,"+ p.name); // 左边
System.out.println("我:你干嘛呢?");
p.getMoney(); // 右边,子类
//变身 向下转型
IronMan im = (IronMan)p;
// p.fly();
// p.save();
im.fly();
im.save();
im.getMoney();
}
}
// 钢铁侠是人类的一种形态
//定义 人
class Person{
//姓名
String name = "托尼.斯塔克";
//挣钱的方法
public void getMoney(){
System.out.println("开厂子挣钱");
}
}
//定义钢铁侠类
class IronMan extends Person{
//姓名
String name = "钢铁侠";
//挣钱的方法
public void getMoney(){
System.out.println("合影5块挣钱");
}
//fly
public void fly(){
System.out.println("飞.............");
}
//救人
public void save(){
System.out.println("救人,男人不救.........");
}
}
2.接口:
类与类,类与接口的关系:
类与类 --继承
单继承,多层继承
类与接口
实现关系,多实现
接口与接口
继承,多继承
接口是可以多实现的,但是类是不能多继承.
综合案例:
A:案例分析
教练和运动员案例 (学生分析然后讲解)
乒乓球运动员(篮球运动员)
乒乓球教练(篮球教练)
为了出国交流,跟乒乓球相关的人员都需要学习英语。
请用所学知识:
分析,这个案例中有哪些抽象类,哪些接口,哪些具体类。
分析:
具体类: 四个
乒乓球运动员(篮球运动员)
乒乓球教练(篮球教练)
抽象类: 运动员类 ,教练类 ,人类
接口: 学英语
interface Study{
//学英语
learnEng();
learnShow();
}
Person {
姓名
年龄
//特有方法
}
abstract 运动员类 {
姓名
年龄
abstract play();
}
abstract 教练类 {
姓名
年龄
abstract teach();
}
乒乓球运动员{
姓名
年龄
play(){
syso("乒乓球");
}
}
篮球运动员{
姓名
年龄
play(){
syso("篮球");
}
}
多态:
1.要么继承(类与类)/要么实现(类与接口)
2.方法重写(不是必须,但是你不重写,没有意义)
3.父类引用指向子类对象(必须)
*/
class PlayerTest{
public static void main(String[] args){
System.out.println();
//创建乒乓球运动员
PPQPlayer ppq = new PPQPlayer("张继科",30);
ppq.eat("榨菜 ");// 继承 person
ppq.play(); // 继承 Player
ppq.learnEng();
Study s = new PPQPlayer(); //接口的多态
s.learnEng();
}
}
//定义接口
interface Study{
//学英语
public abstract void learnEng();
}
//定义抽象 人类
abstract class Person{
String name ;//姓名
int age;//年龄
Person(){}
Person(String name ,int age){
this.name = name;
this.age =age;
}
//get /set
public abstract void eat(String food);
}
//定义抽象 运动员类
abstract class Player extends Person{
Player(){}
Player(String name ,int age){
super(name,age);
}
public abstract void play();
}
//定义抽象 教练类
abstract class Coach extends Person{
Coach(){}
Coach(String name ,int age){
super(name,age);
}
public abstract void teach();
}
//定义 乒乓球 运动员
class PPQPlayer extends Player implements Study{
PPQPlayer(){}
PPQPlayer(String name ,int age){
super(name,age);
}
public void eat(String food){
System.out.println(food+" 就馒头");
}
public void play(){
System.out.println("打乒乓球,我们是冠军");
}
public void learnEng(){
System.out.println("学好英语, 有好处...");
}
}
//定义 篮球运动员
class LQPlayer extends Player{
LQPlayer(){}
LQPlayer(String name ,int age){
super(name,age);
}
public void eat(String food){
System.out.println(food+" 就煎饼");
}
public void play(){
System.out.println("打篮球,还得努力.......");
}
}
//乒乓球教练
class PPQCoach extends Coach implements Study{
PPQCoach(){}
PPQCoach(String name ,int age){
super(name,age);
}
public void eat(String food){
System.out.println(food+" 就馅饼");
}
public void teach(){
System.out.println("教乒乓球,怎么打........");
}
//重写接口中 方法
public void learnEng(){
System.out.println("学好英语, 有好处...");
}
}
//篮球教练
class LQCoach extends Coach{
LQCoach(){}
LQCoach(String name ,int age){
super(name,age);
}
public void eat(String food){
System.out.println(food+" 就肉夹馍");
}
public void teach(){
System.out.println("教篮球,怎么打........");
}
}
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------