首页 > 其他分享 >第五周学习报告

第五周学习报告

时间:2024-08-03 19:39:46浏览次数:15  
标签:静态方法 报告 静态 子类 学习 第五 父类 方法 public

又经过了一周的学习,今天对本周学习进行总结 本周学习了Java面向对象进阶内容

static

静态变量

无论创建了多少个类的对象,静态变量都只有一份拷贝,被该类的所有对象共享。
静态变量通过在变量声明前加上static关键字来声明。

public class MyClass {  
    // 静态变量  
    static int staticVar = 10;  
    // 非静态变量  
    int instanceVar = 20;  
    // 静态方法中可以访问静态变量  
    public static void displayStaticVar() {  
        System.out.println(staticVar);  
    }  
    // 实例方法中可以访问静态变量和非静态变量  
    public void displayVars() {  
        System.out.println("Static Var: " + staticVar);  
        System.out.println("Instance Var: " + instanceVar);  
    }  
}

静态方法

示例:

public class MathUtils {  
    // 私有构造函数,防止实例化  
    private MathUtils() {}  
    // 静态方法,计算两个整数的和  
    public static int add(int a, int b) {  
        return a + b;  
    }  
    // 其他静态方法...  
}  
// 使用方式  
public class Main {  
    public static void main(String[] args) {  
        int sum = MathUtils.add(5, 3); // 直接通过类名调用静态方法  
        System.out.println(sum); // 输出:8  
    }  
}

静态方法特点
1.不依赖于对象实例:静态方法不依赖于类的任何特定实例。它们只与类本身相关联,并且可以在没有创建类实例的情况下被调用。
2.通过类名调用:静态方法通常通过类名来调用,但也可以通过类的实例来调用
3.不能直接访问非静态成员:静态方法不能直接访问类的非静态成员(包括非静态变量和非静态方法),因为非静态成员属于类的特定实例,而静态方法属于类本身。但是,静态方法可以通过类的实例或传递的参数来间接访问非静态成员。
4.主要用于工具功能:静态方法通常用于提供与类本身相关的工具性功能,这些功能不依赖于类的任何特定实例。例如,数学运算、文件操作、字符串处理等。
5.内存占用:静态方法属于类,它们在类被加载到JVM时就被加载,并且只加载一次。这意味着静态方法的代码在内存中只有一份副本,无论创建了多少个类的实例。

工具类

工具类是一组静态方法的集合,工具类中的方法都是静态的。
1.工具类通常被设计为不可实例化的,即它们的构造函数是私有的(private),以防止外部代码创建类的实例。
2.工具类中的所有方法都是静态的,可以直接通过类名调用。

继承

1.单继承:Java只支持单继承,即一个类只能直接继承自一个父类。但是,一个类可以间接地继承多个类(通过多层继承)。
2.继承的层次:在Java中,所有的类最终都继承自java.lang.Object类,即使没有明确声明。因此,Object类是所有类的超类(或称为根类)。
3.方法的重写:子类可以提供一个特定签名的方法,该方法与父类中的某个方法具有相同的名称和参数列表(。这样,当通过子类的引用调用该方法时,将执行子类中的版本,而不是父类中的版本。这称为方法的重写。
访问修饰符:子类不能继承父类中声明为private的成员(属性和方法)。然而,子类可以访问protected和4.public成员,以及默认(包)访问级别的成员(如果它们位于同一个包中)。
5.构造器:子类不能继承父类的构造器。但是,子类构造器可以通过使用super关键字来调用父类的构造器)。
6.final类和方法:如果一个类被声明为final,则它不能被继承。同样,如果一个方法被声明为final,则它不能在子类中被重写。

class Parent {  
    // 父类的属性和方法  
}  
class Child extends Parent {  
    // 子类可以添加新的属性和方法  
    // 子类也可以重写父类的方法  
}

多态

多态是同一个行为具有多个不同表现形式或形态的能力。
1.接口多态:一个接口可以有多个实现类,每个实现类都可以按照接口中定义的方法来实现自己的逻辑。
2.子类多态:子类可以继承父类,并可以重写父类中的方法,实现不同的行为。
多态的实现方式
1.编译时多态(方法重载):
方法重载是指在同一个类中,可以有多个同名方法,但这些方法的参数列表(参数的类型、个数或顺序)必须不同。
编译器在编译时根据方法的参数列表来确定调用哪个方法,这种多态是静态的。
2.运行时多态(方法重写):
方法重写是指子类可以提供一个与父类方法签名相同的方法,从而覆盖父类中的方法实现。
在运行时,JVM根据对象的实际类型来调用相应的方法,这种多态是动态的。

// 父类  
class Animal {  
    void makeSound() {  
        System.out.println("Animal makes a sound");  
    }  
}  
// 子类  
class Dog extends Animal {  
    @Override  
    void makeSound() {  
        System.out.println("Dog barks");  
    }  
}  
// 另一个子类  
class Cat extends Animal {  
    @Override  
    void makeSound() {  
        System.out.println("Cat meows");  
    }  
}  
// 测试类  
public class TestPolymorphism {  
    public static void main(String[] args) {  
        Animal myDog = new Dog();  
        Animal myCat = new Cat();  
        myDog.makeSound(); // 输出: Dog barks  
        myCat.makeSound(); // 输出: Cat meows  
    }  
}

包和final


Java中的包是一种命名空间,用于将类和接口进行分组管理。包有助于防止命名冲突,并且有助于管理大型项目中的代码。通过在类文件的开头使用package关键字来声明。
final
1.修饰类:当一个类被声明为final时,它不能被继承。
2.修饰方法:final方法不能被子类重写。
修饰变量:final修饰的变量只能被赋值一次,之后其值就不能再被改变。对于基本类型变量,这意味着其值不能改变;对于引用类型变量,这意味着其引用不能改变,但其引用的对象本身的内容是可以改变的。

标签:静态方法,报告,静态,子类,学习,第五,父类,方法,public
From: https://www.cnblogs.com/wangzilin0507/p/18340941

相关文章

  • JAVA学习第五周
    这周也是我在学习Java道路上的第五周了,在这一周里并没有学太多新的东西,更多的还是复习了之前所学的东西,在Java这几周的学习中更多的不懂的地方还是集中在面向对象那几章节,尤其是面向对象的三大特点封装,继承和多态。这几部分刚开始看感觉还可以看懂一点,越看越看不懂,有时候多态和继......
  • 嵌入式学习---DAY18:shell脚本
    shell脚本文件进程网络HtmlDbshell脚本是一系列shell命令的集合。  shell  命令解释器shell编程:解释型语言、边翻译边执行、擅长文件处理,操作系统管理、开发效率高  cp 1  2、执、效率低、移植性好C语言:编译型语言、先编译再执行、擅长数据计算和数据处理、开发......
  • 矩阵树定理学习笔记
    用来求和一个图的生成树个数相关的算法,时间复杂度\(O(n^3)\)。你要会求一个矩阵的行列式,这是和行列式有关的前置知识。定理阐述对于无向图定义度数矩阵\(D_{i,j}=[i=j]\deg_i\),其中\(\deg_i\)表示\(i\)的度数。定义邻接矩阵为\(E_{i,j}\)为边\((i,j)\)的个数。定......
  • 2024暑假第五周总结
    Java面向对象通过封装、继承、多态等概念实现代码重用性、灵活性、和可维护性类和对象类是Java中用来描述对象共同特征的模板或蓝图,包括属性(字段)和方法。publicclassCar{privateStringbrand;privateintyear;publicCar(Stringbrand,intyear){......
  • 第五周
    本周学习了集合,静态,继承,多态,抽象类抽象方法以及接口;并及完成了简单的学生管理系统的实现点击查看代码//创建学生类publicclassStudent{privateStringname;privateintage;privateStringid;privateStringaddress;publicStudent(){......
  • OpenCV计算机视觉学习(16)——仿射变换学习笔记
    如果需要其他图像处理的文章及代码,请移步小编的GitHub地址传送门:请点击我如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice在计算机视觉和图像处理中,仿射变换是一种重要的几何变换方法。它可以通过线性变换和平移来改变图像的形状和位置,广泛应......
  • Java中跳转语句的学习
    跳转语句目录跳转语句break语句continue语句break语句break语句可用于上一节介绍的while、repeat-while和for循环结构,它的作用是强行退出循环体,不再执行循环体中剩余的语句。在循环体中使用break语句有两种方式:带有标签和不带标签。语法格式如下:break;//不带标签......
  • python中列表的学习
    列表目录列表列表的定义创建列表列表的索引列表的切片内置函数列表的遍历列表的常用方法(变量.方法名())列表的定义List(列表)是Python中使用最频繁的数据类型,在其他语言中通常叫做数组专门用于存储一串信息列表用[]定义,数据之间使用﹐分隔列表的索引从О开始索引就是数据在列......
  • 深度学习(VIT)
    将Transformer引入图像领域之作,学习一下。网络结构:VIT结构有几个关键的地方:1.图像分块:输入图像被划分为固定大小的非重叠小块(patches),每个小块被展平并线性嵌入到一个固定维度的向量中。这里是将32x32的图像划分成4x4的小块,总共会有16个小块,每个小块有64维向量。2.位置编码:......
  • Objective-C学习笔记(协议和代理)
    协议协议是多个类共享的一个方法列。协议中列出的方法没有相应的实现,计划由其他人来实现。可以定义这些方法为必须实现的,也可以为可选择实现的@protocal协议名//在此处添加必须实现的协议方法@optional//在此处添加可选择实现的协议方法@end遵循协议也符合继承关系......