首页 > 编程语言 >Java继承

Java继承

时间:2023-04-28 17:36:05浏览次数:37  
标签:Java 继承 子类 System println 父类 public out

Java继承

继承的概念

基础主要解决的问题是:共性抽取

特点:

  1. 子类可以拥有父类的"内容"
  2. 子类还可以拥有自己的专有内容

image-20230427144912702

继承的格式

在继承关系中,"子类就是一个父类,子类可以被当做父类看待."

父类的格式定义:(一个普通的类的定义)

子类的格式定义:

public class 子类名称 extends 父类名称{

//内容

}

image-20230428161928398

代码示例

父类

public class Person {
    public void method()
    {
        System.out.println("方法执行!!");
    }
}

子类

public class Student extends Person{


}
public class Teacher extends Person {

}

主函数

public class Main {
    public static void main(String[] args) {
        Student one = new Student();
        one.method();
        Teacher two = new Teacher();
        two.method();


    }
}

继承中成员变量的访问特点

在继承当中,如果变量名重名,则创建子类对象时,访问有两种方式:

直接通过子类对象访问成员变量

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

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

该方法属于谁,就优先用谁,没有则向上找

image-20230428163851417

父类

public class Fu {
    int num = 100;
    int numFu = 10;

    public void methodFu() {
        System.out.println(num);
    }
}

子类

public class Zi extends Fu{
    int num=200;
    int numZi=20;
    public void methodZi()
    {
        System.out.println(num);
    }
}


Main方法

import javax.crypto.spec.PSource;

public class Main {
    public static void main(String[] args) {
        Zi one = new Zi();
        Fu two = new Fu();
        System.out.println(two.numFu);
        System.out.println("============");//父类找不到子类
        System.out.println(one.num);//等号左边是谁就优先用谁
        System.out.println(one.numZi);
        System.out.println(one.numFu);//子类可以找到父类
//        System.out.println(one.method);没有的方法会报错
        System.out.println("=============");
        //下面是使用成员方法进行访问

        one.methodFu();//等号左边是谁就优先用谁,没有就向上找
        one.methodZi();


    }
}

区分继承中重名问题

局部变量: 直接写成员变量名

本类的成员变量: this.成员变量名

父类的成员变量: super.成员变量名

image-20230428165537851

父类

public class Fu {
    int num = 100;

}

子类

public class Zi extends Fu{
    int num=200;
    public void method()
    {
        int num=300;
        System.out.println(num);
        System.out.println(this.num);
        System.out.println(super.num);

    }

}

Main方法

import javax.crypto.spec.PSource;

public class Main {
    public static void main(String[] args) {
        Zi one = new Zi();

        one.method();

    }

}

继承中成员方法的访问特点

创建的对象是谁,就优先用谁,如果没有就向上找

注意:

无论是成员方法还是成员方法,如果没有都是向上找父类,绝对不会向下找子类的.

image-20230428170557733

代码示例

父类

public class Fu {
    public void methodFu() {
        System.out.println("父类方法执行");
    }

    public void method() {
        System.out.println("父类重名方法执行");
    }

}

子类

public class Zi extends Fu {
    public void methodZi() {
        System.out.println("子类方法执行");
    }

    public void method() {
        System.out.println("子类重名方法执行");
    }
}

Main方法

import javax.crypto.spec.PSource;

public class Main {


    public static void main(String[] args) {
        Zi one = new Zi();
        one.methodFu();//调用父类方法
        one.methodZi();//调用子类方法
        one.method();//调用同名方法

    }


}

方法的重写(Override)

概念:在继承关系中,方法的名称一样,参数列表也一样.

  1. 重写:方法的名称一样,参数列表[也一样].
  2. 重载:方法的名称一样,参数列表[不一样].

image-20230428171333023

标签:Java,继承,子类,System,println,父类,public,out
From: https://www.cnblogs.com/harper886/p/17362739.html

相关文章

  • Java多线程之---用 CountDownLatch 说明 AQS 的实现原理
    本文基于jdk1.8。CountDownLatch的使用前面的文章中说到了volatile以及用volatile来实现自旋锁,例如java.util.concurrent.atomic包下的工具类。但是volatile的使用场景毕竟有限,很多的情况下并不是适用,这个时候就需要synchronized或者各种锁实现了。今天就来说一下几......
  • BTrace : Java 线上问题排查神器
    BTrace是什么BTrace是检查和解决线上的问题的杀器,BTrace可以通过编写脚本的方式,获取程序执行过程中的一切信息,并且,注意了,不用重启服务,是的,不用重启服务。写好脚本,直接用命令执行即可,不用动原程序的代码。原理总体来说,BTrace是基于动态字节码修改技术(Hotswap)来实现运行时java......
  • Java 中的几种线程池,你之前用对了吗
    好久不发文章了,难道是因为忙,其实是因为懒。这是一篇关于线程池使用和基本原理的科普水文,如果你经常用到线程池,不知道你的用法标准不标准,是否有隐藏的OOM风险。不经常用线程池的同学,还有对几种线程的使用不甚了解的同学可以读一下此文。为什么要使用线程池虽然大家应该都已经很清......
  • Java1.8 新特性之Stream流
    转:Java1.8新特性之Stream流JDK1.8新特性 ......
  • Java 接口中的方法1.8,为了区别函数式接口
    Java接口中的方法函数式接口式指的式接口冲抽象方法只有一个  函数式接口 java中Comparator接口明明不止一个抽象方法,为什么也算函数式接口?  ......
  • Java算数运算符(++和--)
    1.++和--单独使用就是自增和自减i++-->i=i+1++i-->i=i+1i---->i=i-1--i-->i=i-12.++和--作为表达式使用j=++i-->先自增后赋值-->i=i+1;j=ij=i++-->先赋值后自增-->j=i;i=i+1j=--i-->先自减后赋值-->i=i-1;j=ij=i---->先......
  • 十个最好的Java性能故障排除工具
    推荐十个最好的Java性能故障排除工具:1.jconsole是随着JDK1.5而推出的。这是一个Java监测和管理控制台-JMX兼容的图形工具来监测Java虚拟机。它能够同时监测本地和远程的JVMs。详情可查看:jconsole工具介绍2.VisualVM集成了几个现有的JDK软件工具,轻量级内存和CPU信息概要能力。......
  • Java程序性能优化
    一、避免在循环条件中使用复杂表达式在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快。例子:importjava.util.Vector;classCEL{voidmethod(Vectorvector){for(inti=0;i<vector.si......
  • Java设计模式-单例模式
    一、前言单例模式是一种设计模式,它确保一个类只能创建一个实例,并提供一种全局访问这个实例的方式。在Java中,单例模式可以通过多种方式来实现,其中最常见的是使用私有构造函数和静态方法实现二、基本语法在Java中,实现单例模式的方式有多种,其中最常见的实现方式包括以下几种:1、......
  • Java学习笔记(六)
    1、什么是JavaBean类是公共的有一个无参的公共的构造器有属性,且有对应的get、set方法  2、对单例模式的理解单例模式分为两种: 这种方式叫做饿汉式,是在类加载的时候就直接将对象创建了出来。还有一种懒汉式 懒汉式是在用到实例对象的时候才会将对象创建出来。但......