java_day9_包的划分、形式参数、返回值、修饰符、内部类、匿名内部类

news/2024/10/7 10:52:46/文章来源:https://www.cnblogs.com/w-ll/p/18449799

一、包

包的划分好处:1、方便管理我们的代码文件2、不同包下的文件名可以是一样的常见的包命名规则:1、按照功能划分增加- 学生增加- 老师增加删除- 学生删除- 老师删除修改- 学生修改- 老师修改查询- 学生查询- 老师查询2、按照角色划分学生- 学生增加- 学生删除- 学生修改- 学生查询老师- 老师增加- 老师删除- 老师修改- 老师查询
若某一维度不会大幅度或经常性修改的话,就可以考虑将该维度定义成一个包springboot中层划分:configs: 存放配置文件controller: 主要前端页面与后端交互的入口dao: 主要是与数据库操作相关的代码entity[pojo]: 实体类层service: 业务层

二、形式参数

形式参数基本类型: 当基本数据类型作为参数传递的时候,传递是具体的数值引用类型:数组:当数组作为方法的参数类型的时候,将来需要传递数组的地址值具体的类:当你看到一个类作为方法的参数类型的时候,将来调用需要传入该类或该类的子类的对象抽象类:当你看到一个抽象类作为方法的参数类型的时候,将来调用需要传入该抽象类具体实现子类的对象接口:当你看到一个接口作为方法的参数类型的时候,将来调用需要传入实现了该接口的具体子类对象

具体的类:当你看到一个类作为方法的参数类型的时候,将来调用需要传入该类或该类的子类的对象
代码案例

class Student{public void fun1(){System.out.println("好好学习,天天向上!");}
}class StudentDemo1{//当你看到一个类作为方法的参数类型的时候,将来调用需要传入该类或该类的子类的对象public void show1(Student student){student.fun1();}
}public class Demo1 {public static void main(String[] args) {StudentDemo1 studentDemo1 = new StudentDemo1();studentDemo1.show1(new Student());}
}

当你看到一个抽象类作为方法的参数类型的时候,将来调用需要传入该抽象类具体实现子类的对象

代码案例

abstract class Student2{public abstract void fun1();
}class Student2Zi extends Student2{@Overridepublic void fun1() {System.out.println("江川是世界上手速最快的男人!");}
}class StudentDemo2{//当你看到一个抽象类作为方法的参数类型的时候,将来调用需要传入该抽象类具体实现子类的对象public void show1(Student2 student2){ //Student2 student2 = new Student2Zi()student2.fun1();}
}public class Demo2 {public static void main(String[] args) {StudentDemo2 studentDemo2 = new StudentDemo2();studentDemo2.show1(new Student2Zi());}
}

当你看到一个接口作为方法的参数类型的时候,将来调用需要传入实现了该接口的具体子类对象

代码案例

interface Inter1{void fun1();
}class Student3 implements Inter1{@Overridepublic void fun1() {System.out.println("钱志强是世界上最有钱的男人!");}
}class StudentDemo3{//当你看到一个接口作为方法的参数类型的时候,将来调用需要传入实现了该接口的具体子类对象public void show1(Inter1 inter1){ //Inter1 inter1 = new Student3()inter1.fun1();}
}public class Demo3 {public static void main(String[] args) {StudentDemo3 studentDemo3 = new StudentDemo3();studentDemo3.show1(new Student3());}
}

三、返回值

返回值基本类型: 当基本数据类型作为方法的返回值类型的时候,方法中return具体类型的数值即可引用类型:数组:当数组作为方法的返回值类型的时候,将来需要在方法中return该一个数组的地址值具体的类:当类作为方法的返回值类型的时候,将来需要在方法中return该一个该类的对象抽象类:当抽象类作为方法的返回值类型的时候,将来需要在方法中return该一个该类的具体子类对象接口:当接口作为方法的返回值类型的时候,将来需要在方法中return该一个实现了该接口的具体子类对象

当类作为方法的返回值类型的时候,将来需要在方法中return该一个该类的对象
代码案例

class Student1{public void fun1(){System.out.println("李刚觉得自己是亿万富翁...");}
}class StudentDemo1{//当类作为方法的返回值类型的时候,将来需要在方法中return该一个该类的对象public Student1 show1(){return new Student1();}
}public class Demo1 {public static void main(String[] args) {StudentDemo1 studentDemo1 = new StudentDemo1();Student1 s1 = studentDemo1.show1(); // new Student1()s1.fun1();}
}

当抽象类作为方法的返回值类型的时候,将来需要在方法中return该一个该类的具体子类对象
代码案例

abstract class Student2{public abstract void fun1();
}class Student2Zi extends Student2{@Overridepublic void fun1() {System.out.println("好好学习,天天向上!");}
}class StudentDemo2{//当抽象类作为方法的返回值类型的时候,将来需要在方法中return该一个该类的具体子类对象public Student2 show1(){return new Student2Zi();}
}public class Demo2 {public static void main(String[] args) {StudentDemo2 studentDemo2 = new StudentDemo2();Student2 s1 = studentDemo2.show1(); //Student2 s1 = new Student2Zi()s1.fun1();}
}

当接口作为方法的返回值类型的时候,将来需要在方法中return该一个实现了该接口的具体子类对象

代码案例

interface Inter1{void fun1();
}class Inter1Impl implements Inter1{@Overridepublic void fun1() {System.out.println("好好学习,天天向上!");}
}class Student3{//当接口作为方法的返回值类型的时候,将来需要在方法中return该一个实现了该接口的具体子类对象public Inter1 show1(){return new Inter1Impl();}
}public class Demo3 {public static void main(String[] args) {
//        Student3 student3 = new Student3();
//        Inter1 i = student3.show1(); //Inter1 i = new Inter1Impl()
//        i.fun1();
//        Student3 s = new Student3();
//        Inter1 i = new Student3().show1(); //Inter1 i = new Inter1Impl()//当一个方法结果是一个对象的时候,可以继续.调用返回对象中的其它方法//像这种对象调用方法继续调用的编程方式,称之为叫做链式调用【链式编程】new Student3().show1().fun1();}
}

四、修饰符

权限修饰符:public      protected       默认的     private
同一类中                √           √               √           √
同一包子类,其他类        √            √              √
不同包子类              √            √
不同包其他类            √目前为止学过的修饰符:权限修饰符:public,protected,默认的,private静态修饰符:static抽象修饰符:abstract最终修饰符:final类:权限修饰符:public,默认的抽象修饰符:abstract最终修饰符:final
成员变量:权限修饰符:public,protected,默认的,private静态修饰符:static最终修饰符:final
构造方法:权限修饰符:public,protected,默认的,private
成员方法:权限修饰符:public,protected,默认的,private静态修饰符:static最终修饰符:final抽象修饰符:abstract常见的修饰符组合:1、public static final2、public abstract

五、内部类

内部类:在一个类中定义一个类根据定义的位置不同,分为两种内部类成员内部类:将类定义在类中成员的位置【类中方法外】上常见修饰成员内部类的修饰词:privatestatic局部内部类:将一个类定义在一个方法的内部,只能在方法的内部使用

成员内部类

//class Outer{
//    //成员方法
//    int a = 10;
//    //成员方法
//    public void show1(){
//        System.out.println(this.a);
//    }
//
//    //成员内部类
//    class Inner{
//        int a = 20;
//        public void fun1(){
//            int a = 30;
//            System.out.println(a); // 30
//            System.out.println(this.a); // 20
//            System.out.println(Outer.this.a); // 10
//        }
//    }
//}class Outer{//成员方法int a = 10;//成员方法public void show1(){System.out.println(this.a);}//成员内部类
//    private class Inner{
//        int a = 20;
//        public void fun1(){
//            int a = 30;
//            System.out.println(a); // 30
//            System.out.println(this.a); // 20
//            System.out.println(Outer.this.a); // 10
//        }
//    }static class Inner{int a = 20;public void fun1(){int a = 30;System.out.println(a); // 30System.out.println(this.a); // 20
//            System.out.println(Outer.this.a); // 10}}//    public void show2(){
//        Inner inner = new Inner();
//        inner.fun1();
//    }}public class InnerClassDemo1 {public static void main(String[] args) {//创建成员内部类对象//外部类名.内部类名 对象名 = new 外部类名().new 内部类名();
//        Outer.Inner inner = new Outer().new Inner();
//        inner.fun1();//若成员内部类使用static修饰的话,可以直接使用外部类名获取内部类的构造方法进行创建Outer.Inner inner = new Outer.Inner();}
}

局部内部类

class Outer2{public void fun1(){//局部变量int a = 10;}public void show1(){int b = 11; // 若是被局部内部类使用的话,JDK1.8之后JVM默认会加上final//局部内部类class Inner{public void function(){
//                b = 22;System.out.println("好好学习,天天向上!");
//                System.out.println(b);}}b = 22;Inner inner = new Inner();inner.function();}
}public class InnerClassDemo2 {public static void main(String[] args) {Outer2 outer2 = new Outer2();outer2.show1();}
}

六、匿名内部类

匿名内部类:new 接口名/抽象类名(){//重写接口或者抽象类中的方法}就意味着JVM在运行过程中做了几件事:1、JVM内部自己创建一个类2、这个类实现一个接口或者继承了一个抽象类3、将这个类的对象创建出来
interface Inter1{void fun1();
}//class Inter1Impl1 implements Inter1{
//    @Override
//    public void fun1() {
//        System.out.println("李刚今天下午没有睡觉...");
//    }
//}
//
//class Inter1Impl2 implements Inter1{
//    @Override
//    public void fun1() {
//        System.out.println("江川今天下午睡觉了...");
//    }
//}class Demo1{//当你看到一个接口作为方法参数类型的时候,将来调用时需要传入实现该接口的具体类对象public void show1(Inter1 inter1){ //Inter1 inter1 = new Inter1Impl1()inter1.fun1();}
}public class NiMingClassDemo1 {public static void main(String[] args) {Demo1 demo1 = new Demo1();
//        demo1.show1(new Inter1Impl1());
//
//        demo1.show1(new Inter1Impl2());demo1.show1(new Inter1() {@Overridepublic void fun1() {System.out.println("李刚今天下午没有睡觉...");}});demo1.show1(new Inter1() {@Overridepublic void fun1() {System.out.println("江川今天下午睡觉了...");}});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/809357.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智慧园区管理系统原型

智慧园区管理系统的构建是一个复杂而系统的工程,它融合了信息化、AI、物联网等多种先进技术,旨在提升园区的管理效率、服务质量以及企业运营效率。 一、明确系统目标和需求 需求收集与分析:首先,需要对园区的实际需求进行全面分析,包括园区类型(如产业园区、办公园区、住…

POI导出excel文件加水印

百分百能用,我用的POI版本是5.2.3,效果如下import lombok.extern.slf4j.Slf4j; import org.apache.poi.openxml4j.opc.PackagePartName; import org.apache.poi.openxml4j.opc.PackageRelationship; import org.apache.poi.openxml4j.opc.TargetMode; import org.apache.poi.xs…

FredNormer: 非平稳时间序列预测的频域正则化方法

时间序列预测是一个具有挑战性的任务,尤其是在处理非平稳数据时。现有的基于正则化的方法虽然在解决分布偏移问题上取得了一定成功但仍存在局限性。这些方法主要在时间域进行操作,可能无法充分捕捉在频域中更明显的动态模式,从而导致次优的结果。 FredNormer论文的研究目的主要…

江苏省第二届数据安全技术应用职业技能竞赛初赛WP

一、数据安全解题赛1、ds_0602解题思路题目让我们获取加密文件中的原始数据,解密后提交第六行第二列数据,下载附件,发现里面有两个文件,其中一个是“.enc”结尾,那这里我们得先简单了解一下“.enc”结尾的是什么类型的文件。简单来说“.enc”结尾的文件通常是经过加密的文…

java之使用CompletableFuture入门2

Java 17 -序章 本文介绍用过的 allOf、anyOf 函数的用法。allOf 函数原型两点: 1、没有返回值。 2、参数 cfs 中 任何一个 都不能是 null。anyOf 函数原型两点: 1、有返回值,为 Object。 2、参数 cfs 中 任何一个 都不能是 null。allOf 测试意图: 多个任务正常执行。ben发布…

VMware Aria Operations for Logs 8.18 发布,新增功能概览

VMware Aria Operations for Logs 8.18 发布,新增功能概览VMware Aria Operations for Logs 8.18 - 集中式日志管理 请访问原文链接:https://sysin.org/blog/vmware-aria-operations-for-logs/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org集中式日志管理 V…

VMware Aria Operations for Networks 6.13 发布,新增功能概览

VMware Aria Operations for Networks 6.13 发布,新增功能概览VMware Aria Operations for Networks 6.13 - 网络和应用监控工具 请访问原文链接:https://sysin.org/blog/vmware-aria-operations-for-networks/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org…

读数据工程之道:设计和构建健壮的数据系统01数据工程概述

数据工程概述1. 数据工程 1.1. 自从公司开始使用数据做事,数据工程就以某种形式存在了1.1.1. 预测性分析、描述性分析和报告1.2. 数据工程师获取数据、存储数据,并准备数据供数据科学家、分析师和其他人使用 1.3. 数据工程是系统和流程的开发、实施和维护,这些系统和流程接收…

安装socks5的一次尝试

1. 下载并自动配置socks5sudo wget https://ap-guangzhou-1257892306.cos.ap-guangzhou.myqcloud.com/asi/httpsocks5.sh && sh httpsocks5.sh 执行下载脚本 wget —no-check-certificate https://raw.github.com/Lozy/danted/master/install.sh -O install.sh执行安装…

形函数的构造7

形函数构造 构造单元1的一般近似函数 \(\overline{V(x)}^{(1)}\),由于该单元只有两个节点\(x_1\)和\(x_2\),我们选择包含两个参数\(\alpha_1\)和\(\alpha_2\)的近似方程 \[\overline{V(x)}^{(1)}=\alpha_1+\alpha_2\times x \]令试函数与\(V(x)\)在节点\(x_1\)和\(x_2\)处相等…

等参单元4

在自然坐标系中 , \(\xi_2=1\)和 \(\xi_2=1\),在物理坐标系中为 \(x_1\) 和\(x_2\),相应的节点位移为\(u_1\) 和\(u_2\) 。 在自然坐标系 下,单元形函数为 \[N_{1}(\xi)=\frac{1}{2}(1-\xi)\\N_{2}(\xi)=\frac{1}{2}(1+\xi) \] 利用形函数,在自然坐标系下单元内的任一点 \(…