首页 > 编程语言 >java学习笔记38

java学习笔记38

时间:2022-10-18 15:11:12浏览次数:45  
标签:38 java 子类 笔记 Person Student new 父类 public

面向对象

什么是多态

1.多态概述 多态是继封装、继承之后,面向对象的第三大特性。

2.多态现实意义理解:

现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个具体的同学张三既是学生也是人,即出现两种形态。

Java作为面向对象的语言,同样可以描述一个事物的多种形态。如Student类继承了Person类,一个Student的对象便既是Student,又是Person。

即同一方法可以根据发送对象的不同而采用多种不同的行为方式。

3.多态体现为父类引用变量可以指向子类对象

4.前提条件:必须有子父类关系。

5.存在条件 : 有继承关系,子类重写父类方法,父类引用指向子类对象

6.一个对象的实际类型是确定的,但可以指向对象的引用类型有很多(父类,有关系的类)

创建一个Person类和student类student类是person的子类

在Application类中new student(); 再分别使person类和object指向student

package oopzong.oop.opp5;

public class Application {
   public static void main(String[] args) {
       //一个对象的实际类型是确定的
       //new Student();
       //new Person();

       //可以指向的引用类型就不确定了:父类的引用指向子类
       Student s1 = new Student();
       Person s2 = new Student();
       Object s3 = new Student();
  }
}

在person类中写一个方法

package oopzong.oop.opp5;

public class Person {
   public void run(){
       System.out.println("你好");
  }
}

在Application执行s2

public class Application {
   public static void main(String[] args) {
       //一个对象的实际类型是确定的
       //new Student();
       //new Person();

       //可以指向的引用类型就不确定了:父类的引用指向子类
       Student s1 = new Student();
       Person s2 = new Student();
       Object s3 = new Student();
       s2.run();
  }
}
你好

在student类中重写父类方法

package oopzong.oop.opp5;

public class Student extends Person {
   @Override
   public void run() {
       System.out.println("son");

  }
}

在Application输出s1 ,s2得

s2.run();//子类重写了父类的方法,执行子类的方法
s1.run();

son
son

 

再在student类中定义一个方法,且父类person中没有eat方法

public void eat(){
   System.out.println("eat");
}

执行s1,s2

public class Application {
   public static void main(String[] args) {
       Student s1 = new Student();
       Person s2 = new Student();
       Object s3 = new Student();
       
       s2.eat();//报错,s2的类型是person,person中没有eat方法
       s1.eat();
  }
}

当子类和父类有相同的方法,且子类没有重写父类则调用父类的,子类重写则调用子类

对象能执行哪些方法,主要看对象左边的类型,和右边关系不大

//Student(子类)能调用的方法都是自己的或者继承父类的
Student s1 = new Student();
//Person 父类型 可以指向子类,但是不能调用子类独有的方法
Person s2 = new Student();
Object s3 = new Student();

 

多态的主要事项

1.多态是方法的多态,属性没有多态

2.父类和子类,有联系 (不能把狗转换成猫) 类型转换异常classcastexception!

3.存在条件:继承关系,方法需要重写,父类的引用指向子类对象 father f1 = new son()

 

不能重写的

1.static 静态方法,属于类,它不属于实例

2.final 常量

3.private方法:

标签:38,java,子类,笔记,Person,Student,new,父类,public
From: https://www.cnblogs.com/12345ssdlh/p/16802617.html

相关文章

  • Java数据结构_Collection类
     双链表结构     LinkedList可以完成队列结构栈结构(双向链表)栈对头结点进行add和removepop的底层就是pu......
  • 代码随想录第七天 | 454.四数相加II , 383. 赎金信 , 15. 三数之和,18. 四数之和
    今天是第七天内容依旧是HashMap相关 454.四数相加2classSolution{publicintfourSumCount(int[]nums1,int[]nums2,int[]nums3,int[]nums4){......
  • JAVA项目中常见的异常处理汇总
    在进行JAVA项目开发时,不免会遇到一些比较常见的异常处理情况,下面是我通过在网上查询了一些相关资料进行的各种异常处理情况的总结1.字符串转化为数字的异常(Java.lang.Numb......
  • Java代码审计sql注入
    java_sec_code该项目也可以叫做JavaVulnerabilityCode(Java漏洞代码)。每个漏洞类型代码默认存在安全漏洞(除非本身不存在漏洞),相关修复代码在注释里。具体可查看每个漏......
  • ARM 笔记(1018)-- STM32部分--14 通用定时器输入捕获
    12.4通用定时器输入捕获输入捕获的概念:输入捕获是什么意思?怎样实现的输入捕获?输入捕获捕获的是跳跃的信号,根据硬件连接关系,按键按下是上升沿,按键抬起是下降沿。如果想......
  • JavaScript的日期对象的使用Date
    1<script>2letdate=newDate();//返回的是当前的时间3console.log(date.getFullYear());//获取的当前年份4console.log(date.getMonth()+1);......
  • Java8Stream的flatmap应用(区别map)-优化嵌套for循环条件筛选
    场景Java8新特性-Stream对集合进行操作的常用API:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/126070657前面讲Stream的常用api中讲到map的使用......
  • [轻量化网络]shuffleNet V2学习笔记
    1.四条轻量化网络设计准则如上图所示,分别在GPU和ARM设备上,测试ShuffleNetV1和MobileNetV2在各种操作上的耗时占比,其中:Elementwise:逐元素操作,如RELU函数,残差网络的逐......
  • Java基于解释器模式实现定义一种简单的语言功能示例
    本文实例讲述了Java基于解释器模式实现定义一种简单的语言功能。分享给大家供大家参考,具体如下:一模式定义解释器模式:就是给定一个语言的文法表示,并且定义一个解释器,用来......
  • Java类加载机制(classloader)
    什么是classloaderclassloader顾名思义,即是类加载。虚拟机把描述类的数据从class字节码文件加载到内存,并对数据进行检验、转换解析和初始化,最终形成可以被虚拟机直接使用......