继承 + 多态 + final + 权限修饰符

news/2024/11/25 21:22:47/

目录

继承

多态

final

权限修饰符


继承

  • 继承定义:
    • 可以让类跟类之间产生子父的关系
  • 继承的好处
    • 可以把多个子类中重复的代码抽取到父类中,子类可以直接使用,减少代码几余,提高代码的复用性
  • 子类继承内容
    非私有private
    构造方法××
    成员变量√(不能用)
    成员方法能添加到虚方法表  √不能添加到虚方法表   ×
    • 构造方法

多态

  • 根据传递对象的不同,调用不同的show方法
  • 同类型对象,表现出不同的形态
  • 多态的前提  
    • 有继承关系
    • 有父类引用指向子类对象
    • 有方法重写
  • 案例
    • 人类
      package com.duotai;public class Person {private String name;private String age;public Person() { }public Person(String name, String age) {this.name = name;this.age = age;}public String getName() { return name; }public void setName(String name) { this.name = name; }public String getAge() { return age; }public void setAge(String age) { this.age = age; }public void show(){System.out.println("我执行了吗");}
      }
      
    • 学生类
      package com.duotai;public class Student extends Person {public void show(){System.out.println("学生:" + getName() + getAge());}
      }
      
    • 老师类
      package com.duotai;public class Teacher extends Person{public void show(){System.out.println("老师:" + getName() + getAge());}
      }
      
    • 测试类
      package com.duotai;public class Test {public static void main(String[] args) {Student student = new Student();student.setName("小敏");student.setAge("6");Teacher teacher = new Teacher();teacher.setName("王老师");teacher.setAge("29");register(student);register(teacher);}public static void register(Person p){p.show();}
      }
      
    • 结果
  • 多态调用成员变量的特点

    • 变量调用:编译看左边、运行看右边
    • 方法调用:编译看左边、运行观看右边
  • 案例
    根据需求完成代码:1.定义狗类属性:年龄,颜色行为:eat(String something)(something表示吃的东西)看家lookHome方法(无参数)2.定义猫类属性:年龄,颜色行为:eat(String something)方法(something表示吃的东西)逮老鼠catchMouse方法(无参数)3.定义Person类//饲养员属性:姓名,年龄行为:keepPet(Dog dog,String something)方法功能:喂养宠物狗,something表示喂养的东西行为:keepPet(Cat cat,String something)方法功能:喂养宠物猫,something表示喂养的东西生成空参有参构造,set和get方法  4.定义测试类(完成以下打印效果):keepPet(Dog dog,String somethind)方法打印内容如下:年龄为30岁的老王养了一只黑颜色的2岁的狗2岁的黑颜色的狗两只前腿死死的抱住骨头猛吃keepPet(Cat cat,String somethind)方法打印内容如下:年龄为25岁的老李养了一只灰颜色的3岁的猫3岁的灰颜色的猫眯着眼睛侧着头吃鱼5.思考:		1.Dog和Cat都是Animal的子类,以上案例中针对不同的动物,定义了不同的keepPet方法,过于繁琐,能否简化,并体会简化后的好处?2.Dog和Cat虽然都是Animal的子类,但是都有其特有方法,能否想办法在keepPet中调用特有方法?
    • Animal类
      package com.duotai.test;public class animal {private int age;private String color;public animal() { }public animal(int age, String color) {this.age = age;this.color = color;}public int getAge() { return age; }public void setAge(int age) { this.age = age; }public String getColor() { return color; }public void setColor(String color) { this.color = color; }public void eat(String something){System.out.println("动物在吃" + something);}
      }
      
    • Cat类
      package com.duotai.test;public class Cat extends animal{public Cat() { }public Cat(int age, String color) {super(age, color);}@Overridepublic void eat(String something){System.out.println(getAge() + "岁的" + getColor() + "颜色的猫吃" + something);}public void cathMouse(){System.out.println("猫抓老鼠");}
      }
      
    • Dog类
      package com.duotai.test;public class Dog extends animal {public Dog() { }public Dog(int age, String color) {super(age, color);}@Overridepublic void eat(String something){System.out.println(getAge() + "岁的" + getColor() + "颜色的狗吃" + something);}public void LookHome(){System.out.println("狗在看家");}
      }
      
    • Person类
      package com.duotai.test;public class Person {private String name;private int age;public Person(){}public Person(String name, int age) {this.name = name;this.age = age;}public String getName() { return name; }public void setName(String name) { this.name = name; }public int getAge() { return age; }public void setAge(int age) { this.age = age; }public void keepPet(Dog dog,String something){System.out.println("年龄为" + getAge() + "的" + getName() + "养了一只" + dog.getColor() + "色的狗");dog.eat(something);}public void keepPet(Cat cat,String something){System.out.println("年龄为" + getAge() + "的" + getName() + "养了一只" + cat.getColor() + "色的猫");cat.eat(something);}}
      
    • Test类
      package com.duotai.test;public class Test {public static void main(String[] args) {Person person = new Person("老王",25);Dog dog = new Dog(2, "黑");person.keepPet(dog,"骨头");Person person1 = new Person("小李", 15);Cat cat = new Cat(1, "黄");person1.keepPet(cat,"鱼");}
      }
      

       

final

  • final        
    • 方法:表明方法是最终方法,不能被重写
    • 类:表明类是最终类,不能被继承
    • 变量:叫做常量,只能被赋值一次
      • final修饰的变量是基本类型:变量存储的数据值不能发生改变
      • final修饰的变量是引用类型:变量存储的地址值不能发生改变,但对象内部可以变
  • 案例:更加安全

权限修饰符

  • 修饰符种类
    修饰符同一个类中同一个包中
    其他类
    不同包下的
    子类
    不同包下的
    无关类
    private
    空值不写
    protected
    public


http://www.ppmy.cn/news/75094.html

相关文章

Spark大数据处理讲课笔记----Spark任务调度

零、本节学习目标 理解DAG概念了解Stage划分了解RDD在Spark中的运行流程 一、有向无环图 (一)DAG概念 DAG(Directed Acyclic Graph)叫做有向无环图,Spark中的RDD通过一系列的转换算子操作和行动算子操作形成了一个…

海康、快仓的机器人增长法则:谋上市、强技术、勤出海

在新一轮全球工业革命的引领下,智能制造应用规模和发展水平大幅跃升,移动机器人(AMR/AGV机器人)应用需求随之水涨船高。 伴随政策利好、技术迭代、需求释放,移动机器人广泛应用于汽车工业、3C电子、烟草行业、物流行业…

小程序容器技术在构建超级App的技术价值

今年来,随着软件及开源技术的发展,软件应用架构的概念也随之流行起来。它提供了一种组织和设计软件系统的有效方法,具有许多优势和好处: 模块化和可维护性:软件应用架构将系统拆分为模块化的组件,每个组件…

javase个人小结

一、数据类型 二、运算符(需要注意的) /:如果是int类型,那么会保留整数,舍去余数 列如:10/3 3 优先级:拿不准就加括号,括号优先级最高 三、类和对象 什么是封装,继承…

VMware快照:简化虚拟化环境管理与数据保护

引言: 在虚拟化环境中,数据保护和灵活性是至关重要的。VMware快照作为一项强大的功能,为虚拟机管理者提供了便利和安全性。本文将介绍VMware快照的使用,以及它为用户带来的几个关键优势。 VMware快照是一项重要的功能&#xff0c…

Vue.js表单输入绑定

对于Vue来说,使用v-bind并不能解决表单域对象双向绑定的需求。所谓双向绑定,就是无论是通过input还是通过Vue对象,都能修改绑定的数据对象的值。Vue提供了v-model进行双向绑定。本章将重点讲解表单域对象的双向绑定方法和技巧。 10.1 实现双…

java基于springboot协同过滤算法的网上图书商城推荐系统m44xq2

开发环境 开发语言:Java 框架:springboot 技术:JSP JDK版本:JDK1.8 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9 浏览器:谷歌浏览器功能介绍 Spring…

前端设计必须知道!7个超实用的工具推荐!

前端网络开发作为一个高薪行业,近年来的繁荣是业内人士所看到的。网络开发工具也在上升,市场上出现了越来越多的前端页面设计工具。但随着前端页面设计工具数量的增加,找到合适的前端页面设计工具来完成工作有时会让开发团队感到困惑。 本文…