阿花宝宝 Java基础笔记 之 多态

多态
 父类类型 父类引用=new 子类类型();
多态三要素
 1 继承关系
 2 要有方法重写
    子类没有重写父类方法时,子类对象调用的是父类的方法
    父类没有方法时,无法使用父类对象去调用   编译不通过
    编译时,看写的对象是什么类型,就访问什么类型
    运行时,会根据传进来的真实类型来调用相应方法
   jvm动态绑定机制,根据运行时的真实类型去调用相应方法
 3 父类引用指向子类对象

抽象方法
 1.抽象方法没有具体实现
  访问修饰符abstract 返回类型 方法名();
 2.抽象方法所在类必须是抽象类
  访问修饰符 abstract class 类名{}
 3.子类必须实现抽象父类中的抽象方法,除非子类本身也是抽象的
 4.抽象类中可以有抽象方法 ,也可以没有
 5.抽象类不能被实例化

向上转型 和 向上转型
  向上转型:向上转型:父类的引用指向子类对象。自动进行类型转换
  向上转型:<父类型> <引用变量名> = new <子类型>();
     此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法,不是父类的方法
     此时通过父类引用变量无法调用子类特有的方法
 向下转型:将一个指向子类对象的父类引用赋给一个子类的引用,
 即:父类类型转换为子类类型。需强制类型转换
  子类类型  子类引用名=(子类类型)父类引用;
   在向下转型的过程中,如果没有转换为真实子类类型,会出现类型转换异常
 Java中提供了instanceof运算符来进行类型的判断
 if(父类引用 instanceof 子类类型){
 (子类类型) 子类引用=(子类类型)父类引用;
  子类引用.子类特有方法();
}
父类类型作为方法的返回值
 访问修饰符 父类类型 方法名(参数){
 return 具体子类对象;
 }

时间: 2024-12-04 22:02:32

阿花宝宝 Java基础笔记 之 多态的相关文章

阿花宝宝 Java基础笔记 之 多态区分

多态 Pet p = new Dog(); 前边是父类类型 后面是子类类型: 都是p.mm():1.如果父类有 子类有    那么调用 子类的2.如果父类有 子类没有   那么调用  父类的3.如果父类没有 子类有   那么 报错!!!!一 . 多态    父类类型  父类引用 = new 子类类型():   多态 三要素:   1 .  要有继承关系  extends    2 .  要有方法重写    第一种情况子类没有重写父类同名方法时,子类对象调用的是父类的方法 第二种情况  父类没有此

阿花宝宝 Java基础笔记 之 封装

为什么要用封装 安全 方便 降低耦合封装的步骤:1.将属性变为private修饰2.写封装的方法 public void setXxx(参数){ //根据处理逻辑给属性赋值 } public 属性类型 getXxx(){ //return 属性值 }访问修饰符 一个.java文件可以定义多个class   但是只能有一个public class 且要求与文件名一致 默认修饰符 protect private public static 静态  static 修饰的成员随类加载,在创建对象之前,因

阿花宝宝 Java基础笔记 之 带参方法

一,带参方法1.如何定义带参方法<访问修饰符> 返回类型 <方法名>(<参数列表>){ //方法的主体}访问修饰符:public protected private 返回值类型:    无返回值:void  方法体内没有return    有返回值:数据类型(int,double,String 等) 方法体内必须有return,并且 return后的值的数据类型要跟定义方法时的一致. 参数列表:列表中各参数间以逗号分隔,每个参数由一个数据类型和一个标识符名组成2.带参方

阿花宝宝 Java基础笔记 之 引用类型作为参数

一,引用类型作为参数1.数组类型作为方法返回值  方法体内return的返回类型与方法定义的返回值类型必须一致.2.数组类型作为参数  调用时方法内的实参为数组为定义方法时的形参类型2.对象类型的参数   对象属于引用数据类型,引用数据类型所传递的值为该对象的地址.   当把一个对象作为参数传递给方法时,其实是把对象的地址传递给了该方法的参数.   对象作为参数传递的时候要注意两点: 1.在接收方,参数列表(形参),要写明对象类型(即 类),例如:  public float getAvg(St

阿花宝宝 Java基础笔记 之 类和对象

一,对象对象:客观存在的事物就是对象对象包含:属性(特征)  和   方法(操作)二,类类:具有相同属性和方法的一组对象的集合.类和对象的关系就是抽象和具体的关系.类是对象的集合,对象是类的实例. 定义一个类的步骤1.定义类名 2.编写类的属性3.编写类的方法public class  <类名>{ //定义属性部分 定义变量来描述类所具有的属性,这些变量称为类的成员变量.  //定义方法部分 访问修饰符  返回值类型 方法名(){  方法体 }}创建和使用对象类名 对象名=new 类名(); 

阿花宝宝 Java基础笔记 之 流程控制(二)

1. 各循环可互相嵌套    一般不超过三层    外层循环变量变化一次,内层循环变量要变化一遍   注意点:循环次数.(内层循环次数*外层循环次数)2.break语句的使用  break语句用于终止某个循环,使程序跳到循环块外的下一条语句.  在循环中位于break后的语句将不再执行,循环也停止执行.  break语句不仅可以用在for循环中,也可以用在while和do-while循环中.  break语句通常与if条件语句一起使用. 3. continue语句的使用  continue可以用

阿花宝宝 Java基础笔记 之 继承相关问答题

继承问答题:1.创建对象一定会调用类里边的构造方法你知不知?         yes2.类里边能有多个构造方法你知不知道?   yes3.如果类里边有多个构造方法你会调用那个你知不知道?4.什么是子类你知不知道?5.执行子类的构造方法之前肯定会调用父类无参的构造方法你知不知道?6.怎么通过子类调用父类有参的构造方法?Student s1 = new Student(2,"张三");Student s2 = new Student(2,"张三"); if(s1==s2

阿花宝宝 Java基础笔记 之 流程控制(一)

1.语法:if(条件1){           //代码1        }else if(条件2){           //代码块2          }else{           //代码块3        }        else if:可以没有,可以多个        else:可以没有,最多一个,并且只能放在最后  先判断条件1,当结果为true时,执行大括号内的代码块1,跳出结构!  结果为false时,再判断条件2,当结果为true时,执行大括号内的代码块2,当跳出结构! 

阿花宝宝 Java基础笔记 之 继承

一,继承  当某些类有一些共同内容时,可以把这些共同 的内容抽取到父类中.1.分析出多个类共有的属性和方法2.将这些共有的抽取出一个父类,创建父类,讲共同的内容抽取到父类,本类只保留特有的内容 3.子类使用extends继承父类 public class 子类名 extends 父类名{ }super 调用构造:super(参数)://放在第一行 调用成员:super.属性  super.方法名(); 在构造方法中,super和this不能同时使用 继承关系中构造方法的调用无论是否显式的调用父类