多态,构造方法

多态,构造方法

具有多个不同形态的表现形式,父类引用指向子类对象,父new子

父类类型 变量名=new 子类对象();
接口 接口名=new 实现类对象();

使用多态访问成员变量

直接访问成员变量

看等于号左边是谁,优先使用,没有则向上找

间接通过方法访问成员变量

看方法属于谁,优先使用,没有则向上找,如果子类重写方法,就是子,没有重写就是父

使用多态访问成员方法:看new的是谁,就优先使用谁,没有则向上找
成员变量:编译看左边,运行看左边
成员方法:编译看左边,运行看右边

多态的好处

  • 无论右边new的哪个子类,等于号左边在调用的时候方法不需要变化
  • 使代码更加的简单简洁,并具有良好的扩展性

多态的转型

向上转型

父类 对象名 =  new 子类名称();

右侧创建一个子类对象,把它当做一个父类使用,小范围转大范围 

Animal a = new Dog();  

double d = 100;
向上转型绝对安全

向下转型

还原的操作  子类名称 对象名 = (子类名称) 父类对象;
将父类对象,还原成子类对象
ClassCastException:类型转换异常
instanceof 关键字判断类型

权限修饰符

final:代表最终,不可改变
修饰成员变量:值不能改变,必须赋初始值
修饰局部变量:值不能改变
修饰类:不能有子类
修饰方法:不能被重写
(修饰对象):内存地址锁定

public(公开的) protected(受保护的) default(默认,不能写) private(私有的)
同一类中 Yes Yes Yes Yes
同一包中(子类和无关类) Yes Yes Yes
不同包的子类 Yes Yes
不同包的无关类 Yes

成员变量使用private
方法受用public,便于调用
构造方法使用public,方便创建对象

构造方法

  • 在创建对象的时候会自动调用构造方法,如果没有自定义构造方法,那么JVM会自动创建一个空参构造
  • 当自定义了构造方法以后,JVM将不会自动创建空参构造方法
  • 构造方法没有返回值,也不需要写返回值,因为这个方法就是来创建对象的,创建完对象,方法就会结束
  • 构造方法名字必须和类名完全一致
  • 构造方法是可以重载出现的
  • 构造方法能被修饰为private,作用就是为了阻止该类创建对象

构造方法和普通方法的区别

  • 构造方法在创建对象的时候会自动调用,并且只执行一次
  • 普通方法需要手动调用,可以使用多次

构造方法之间是可以进行调用的,但是不能直接写方法名,写this();

子类调用父类构造方法

默认直接调用,隐式代码super();
但是this()和super()同时存在会报错,因为this()和super()必须都在代码的第一行;

posted @ 2023-05-01 14:07  YxinHaaa  阅读(2)  评论(0编辑  收藏  举报