首页 > 编程语言 >Java继承学习随记

Java继承学习随记

时间:2025-01-10 17:14:28浏览次数:1  
标签:Java name 继承 gender age id String public 随记

Java继承多态学习随记

继承

  1. 父类的private修饰无法调用

  2. 子类构建时,先构建所继承的父类,再构建子类
    此处隐藏代码super();,默认调用父类的无参构建。此代码必须在构建器的任何一句代码前写。
    若想调用父类的有参构建,得在super();内写上参

  3. 调用父类方法或参数使用super关键字,无此关键字遵循就近原则,子类没有向最近的一级父类上找

  4. 调用自己类内的参数或方法,使用this关键字。

  5. thissuper不能同时出现在构建方法里

  6. 静态方法:方法的调用只和定义的数据类型有关。
    重写:父类的功能子类不一定需要或不满足 Alt+insert @Override

  • 非静态
  • 非final
  • 非私有
  • 方法名、参数列表必须相同
  • 修饰符范围可扩大但不能缩小

多态

一个对象的实际类型是确定的,可以指向的引用类型不确定。父类的引用指向子类的类型,不能调用子类独有的方法,当二者都有这个方法时调用子类的方法。
引用类型指明能够使用哪些方法,而数据类型是确定的。

示例:
Person类

package Demo01;

public class Person {
    private String name;
    private int age;
    private String gender;
    private String address;

    public Person(String name, int age, String gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    public Person(){
        this.name="name";
        this.age=0;
        this.gender="gender";
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        if (age<0||age>100) {
            System.out.println("Wrong age");
        }
        this.age = age;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }
    public void work(){
        System.out.println("Doing……");
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

Student类

package Demo01;

public class Student extends Person {
    private String name;
    private int age;
    private int id;
    private String gender;

    public Student() {
        this.name = "name";
        this.age = 0;
        this.id = 0;
        this.gender = "gender";
    }
    public Student(String name, int age, int id, String gender) {
        this.name = name;
        this.age = age;
        this.id = id;
        this.gender = gender;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @Override
    public void work(){
        System.out.println("Studying……");
    }
}

主函数

package Demo01;

public class test01 {
    public static void main(String[] args) {
       Student s1 = new Student("Britta",18,73,"female");
       Person p1 = new Student("Yeast",18,76,"male");
       s1.setAddress("Nanjing");
       p1.setAddress("Grape");
       System.out.println(s1.getAddress());
       System.out.println(p1.getAddress());
       p1.work();
       s1.work();
    }
}

布丽塔作为一个学生出现,他默认是个人,人的属性都可以调用,但他是学生,所以学生的id也可以使用。
但酵母菌作为一个人,虽然他是学生。他有学生id,但不能被查看(他不愿意使用学生id)(什么)。他是个人,只能调用Person内部的方法,Person里是没有学生id的相关方法的,因而不能被调用,即使他拥有学生id。
这就是引用类型指明能够使用哪些方法,而数据类型是确定的。
也有办法对酵母菌的id进行查看,那就是将酵母菌的类型强制转换成学生。

实际情况是,人以前是学生,但现在不是。以前有学生id,但现在不用了。很像人=学生的状态,但java的继承是单继承的,此时酵母菌就无法有学生之外的别的身份。这就要转到接口的话题了。

标签:Java,name,继承,gender,age,id,String,public,随记
From: https://www.cnblogs.com/britta/p/18664072

相关文章

  • redis-7.4.2哨兵随记
    ###########################redis.conf7.4.2主从################################http://download.redis.io/releases/redis-7.4.2.tar.gztarxfredis-7.4.2.tar.gzcdredis-7.4.2makemakeinstallPREFIX=/usr/local/ccdt/redis_7.4.2/redis36379makeinsta......
  • java添加企微 群机器人 异常通知 流程
    1.在群设置点击添加群机器人要记住webhook地址此处前置条件已完成程序这是官方文档案例importlombok.extern.slf4j.Slf4j;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.stereotype.Component;importjava.io.O......
  • 十个经典的Java面试题及详解,这些问题涵盖了Java语言特性、多线程、JVM、设计模式、框
    1.Java内存模型(JMM)问题:请解释Java内存模型(JMM)的基本概念。答案:Java内存模型(JMM)定义了多线程程序中变量的访问规则。JMM的主要目标是确保程序在多线程环境下的正确性和性能。JMM主要包括以下几点:主内存与工作内存:所有变量都存储在主内存中,每个线程有自己的工作内存,线程对变......
  • java基于大数据的身体健康管理平台论文+源码 2025毕设
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景在当今社会,随着科技的飞速发展,大数据技术已经渗透到各个领域。在健康管理方面,人们产生的健康数据呈海量增长趋势,如医疗记录、健康监测设备数据等......
  • java基于JSP学生信息管理系统论文+源码 2025毕设
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景在当今的教育环境中,随着学校规模的不断扩大和教育管理事务的日益繁杂,传统的人工管理方式已难以满足高效、准确管理学生信息的需求。学校需要处理......
  • Java面试笔试题大汇总(最全+详细答案)
    1.抽象类和接口的对比从设计层面来说,抽象类是对类的抽象,是一种模板设计,接口是行为的抽象,是一种行为的规范。相同点①接口和抽象类都不能实例化②都位于继承的顶端,用于被其他类实现或继承③都包含抽象方法,其子类都必须重写这些抽象方法不同点注:Java8中接口中引入默......
  • 20、javase-API.容器
    为了在程序中可以保存数目不确定的对象,Java提供了一系列特殊的类容器。位于java.util包中,使用时必须导包。容器按照其存储结构可以分为两大类单列集合CollectionList:元素有序、可重复ArrayListLinkedListSet:元素无序,不可重复HashSetTreeSet双列集......
  • Java生成Word文档之 XDocReport 和 Poi-tl
    近期参与的多个项目中,均涉及根据预定义模板生成Word文档以供前端下载的需求。以往,我们通常采用将Word文档转换为XML格式,并通过代码赋值变量的方式来实现这一功能。尽管此方法在技术层面可行,但当面对篇幅较长且包含大量变量的文档时,其弊端便显露无遗:代码冗长繁杂,模板维护困难,不利......
  • JavaScript的DOM讲解
     一、DOM基础概念 (1)DOM定义:文档对象模型(DocumentObjectModel)        作为一系列极具实用价值的编程接口,赋予了开发者改变网页内容、调整页面结构以及修饰样式的能力。在DOM的体系架构里,网页文档由document精准指代,页面元素对应着element,而像标签、属性、文本......
  • java poi 模板导出 套用表格格式
    模板文件格式如下 生成数据后样式如下 poi3.17 excel2007已上xlsx 直接上代码。拿走不谢!1publicstaticXSSFWorkbookreadTemplate(StringfilePath)throwsIOException{2try(FileInputStreamfis=newFileInputStream(filePath)){3......