面向对象的学习day03

  • Post author:
  • Post category:其他


根据业务要求 提取对象:
1个酒店,n个房间,n个客户

相关类:
Guest类:
成员变量:
姓名
年龄
id(身份证)

成员方法:

Room类:
成员变量:
房间号
客户(Guest)

成员方法:

Hotel类:
成员变量:
Room(房间)

成员方法:
-入住
-退房
-查房

java写代码顺序:
先有类,再有对象


飞机大战:
提取对象:
大敌机 小敌机 小蜜蜂 英雄机 子弹

提取相同的成员变量和成员方法出来,成为一个类:
父类(基类):
成员变量:
int x, int y,图片 ,图片的宽,图片的高
成员方法:
move()

子类(衍生类/扩展类):
大敌机
成员变量
int blood,
int speed;
int score;

成员方法

小敌机
成员变量
int blood,
int speed;
int score;

成员方法

小蜜蜂
成员变量:
int blood,
int speed;

成员方法:

英雄机
成员变量:
int life,
int score;

成员方法:

子弹:
成员变量:
int blood,
int speed;

成员方法:
move()


1.继承(extends): 子类继承父类
1).语法结构:
子类(衍生类/扩展类) extends 父类(基类)
2).继承的特征:
a.子类继承父类,就继承父类中所有的成员变量和成员方法
b.所有类都有默认继承的父类:Object
c.一个类只能有一个父类,但是一个父类可以有多个子类
d.子类中还可以定义自己独特的成员变量和成员方法
子类的功能一定比父类的强大

3).特殊情况:
a.子类中的成员变量名和父类中的同名时
ps: name
Dog d = new Dog()
d.name -> 显示子类中自己的成员变量,获取不到父类的成员变量
建议: 有父子类关系的类中,尽量不要出现相同的成员变量名

b.子类中可以引用父类对象
c.创建子类对象之前,会先创建父类对象
子类加载前,会先加载父类

e.通过子类对象调用方法是
先看子类中有没有重写父类中的方法
如果重写了,则显示子类中的方法
如果没有,则显示从父类中继承过来的方法

2.super关键词
super:父类对象
1).在子类构造方法中一定都会先默认调用父类的无参构造方法
默认添加super()
2).如果父类中没有无参构造方法,就要在子类中手动调用父类的有参构造方法
3).super()只能出现在构造方法的第一行

4).建议:所有存在父子类关系的类中,建议先添加无参构造方法,方便子类使用

3.方法的重写
前提: 必须存在父子类关系
子类中重写父类定义的方法,方法的方法名/方法的返回值/方法的修饰符/方法的参数,必须完全一致才能实现方法的重写.

4.抽象类: abstract
1)抽象类:
a.使用abstract修饰的类,叫做抽象类
b.一个类中可以存在多个抽象方法
c.抽象类是不可以new对象的,也就是不能实例化
只能通过子类实现
d.抽象类也有构造方法,为了方便子类使用

2)抽象方法
a.使用abstract修饰的方法,抽象方法
b.抽象方法是没有方法体的
c.如果子类不重写父类中的抽象方法,就必须将自己变成抽象类

3)成员变量是不可能是抽象的,因为都是具体的类型,具体的值.

4)判断:
有抽象方法的类叫做抽象类 √
抽象类就是有抽象方法的类 ×
抽象类中可以存在抽象方法 √

面试题:
1.this关键词 和 super关键词的区别:
2.方法重载和方法重写的区别:
方法重载前提: 同一个类中
方法重写前提: 父子类中
3.面向对象的三大特征:
(继承 封装 多态) 抽象


版权声明:本文为David648210原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。