day 11 上转型对象、抽象类

1.上转型对象
Teacher teacher=new MathTeacher();
teacher.teach();
1.1 对于成员方法来说
编译看左边,运行看右边
teacher对象可以使用的方法,是在teacher类中定义过的方法teach(),真正执行的时候,调用的是子类MathTeacher对象中重写的方法teach()
1.2 对于成员变量来说
teacher对象使用的是父类中的成员变量,而不是子类中的成员变量
1.3 对于static方法来说
编译看父类,运行看父类

2.多态转型
1.上转型
2.下转型

3.抽象类

1.抽象类不能直接实例化,不能用new方法创建对象
2.抽象类中抽象方法没有方法体,无法执行
3.抽象类不⼀定有抽象⽅法, 有抽象⽅法的类⼀定是抽象类或者接⼝
4.1  抽象类的使用
  1.可以使用普通子类完成抽象类的对象创建--子类必须重写所有的抽象方法
  2.使用匿名内部类
  5.抽象类中普通成员方法和抽象方法都可以存在
  6.抽象中成员变量和普通类中一样

4.抽象类的子类可以是什么

1.普通子类

  普通子类必须重写所有的抽象方法--创建抽象类对象
  Abstract abstract;
  public class A  extends abstract;
  A a=new abstract();
  
  2.抽象子类--继承抽象父类
  
  直接继承抽象父类的所有抽象方法,不一定要重写所有的抽象方法
   Abstract abstract;
   Abstract abstract2 extends abstract;

5.abstract

6.static

*被static修饰的变量,推荐通过类名调用

6.1 属性、方法

1.被static 修饰的属性,属于类本身,所有这个类生成的对象都拥有这个属性
2.被static 修饰的变量,存在于方法区/静态区,叫静态变量/类变量
3.被static修饰的方法,叫静态方法/类方法

6.2 属性、方法的调用

1.可以由对象调用静态属性/静态方法
2.可以由类调用静态属性/静态方法
3.静态方法只能调用静态属性和静态方法

6.3 静态成员声明周期
  1.静态成员随着类的加载而存在,类消失而消失  ,当类被使用的时候, jvm不关闭, 静态就⼀直存在, 太多话 ,容易造成内存溢出,类的字节码文件会被加载到方法区,静态成员被加载到静态方法区
  2.静态方法中不能使用this,因为static方法的加载在对象创建之前

6.4 static 使用范围
1.频繁被使用的成员变量和成员方法推荐使用static

6.5 局部变量 成员变量 类变量

                 局部变量       成员变量     类变量区别:
位置:
    局部变量:方法中
    成员变量:类中方法外
    类变量:类中方法外,被static修饰
内存中位置:
    局部变量:栈内
    成员变量:堆内
    类变量:  方法区内,只有一份
生命周期:
    局部变量:和方法相关,随着方法的存在/消亡而存在/消亡
    成员变量:和对象相关,随着对象的存在/消亡而存在/消亡
    类变量:  和类相关,随着类的存在/消亡而存在/消亡
使用方法:
    局部变量:只能在方法内使用
    成员变量:通过对象调用,对象名.成员变量名
    类变量:  共享的,类名.类变量名
初始化:
    局部变量:要手动初始化后才能使用
    成员变量:有初始化值,自行设定或者是默认值
    类变量:有初始化值,自行设定或者是默认值
局部变量成员变量类变量
代码中位置方法中类中方法外类中方法外
内存中位置静态方法区
声明周期方法存在它存在对象存在它存在类存在它存在
使用方法被方法使用被对象使用被类和对象使用
初始化要手动初始化才可使用声明之后初始化,或者使用默认值声明之后初始化,或者使用默认值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值