首页 > 编程语言 >Java 初学 day09

Java 初学 day09

时间:2024-10-16 09:22:13浏览次数:1  
标签:day09 show1 Java fun1 void class 初学 new public

java 09

1、形式参数

基本类型: 当基本数据类型作为参数传递的时候,传递是具体的数值
引用类型:
    数组:当数组作为方法的参数类型的时候,将来需要传递数组的地址值
    具体的类:当你看到一个类作为方法的参数类型的时候,将来调用需要传入该类或该类的子类的对象
    抽象类:当你看到一个抽象类作为方法的参数类型的时候,将来调用需要传入该抽象类具体实现子类的对象
    接口:当你看到一个接口作为方法的参数类型的时候,将来调用需要传入实现了该接口的具体子类对象
具体的类作参数传递示例
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{
    @Override
    public 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{
    @Override
    public 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());
    }
}

2、返回值

基本类型: 当基本数据类型作为方法的返回值类型的时候,方法中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();
    }
}
返回值为抽象类示例
abstract class Student2{
    public abstract void fun1();
}

class Student2Zi extends Student2{
    @Override
    public 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();
    }
}
返回值为接口示例
interface Inter1{
    void fun1();
}

class Inter1Impl implements Inter1{
    @Override
    public 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();
    }
}

3、权限修饰符

                     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 final
     2、public abstract

4、内部类

内部类:在一个类中定义一个类
    根据定义的位置不同,分为两种内部类
    成员内部类:将类定义在类中成员的位置【类中方法外】上
        常见修饰成员内部类的修饰词:
            private
            static
局部内部类:将一个类定义在一个方法的内部,只能在方法的内部使用
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() {
            @Override
            public void fun1() {
                System.out.println("李刚今天下午没有睡觉...");
            }
        });

        demo1.show1(new Inter1() {
            @Override
            public void fun1() {
                System.out.println("江川今天下午睡觉了...");
            }
        });

        //扩展知识,今天不细说,最后一天的时候细说
//        demo1.show1(new Inter1() {
//            @Override
//            public void fun1() {
//                System.out.println("数加666");
//            }
//        });
        //若匿名内部类是一个接口的对象,且接口中只有一个抽象方法,就可以改写以下写法格式
//        demo1.show1(()->System.out.println("数加666")); // lambda表达式




    }
}
/*
    要求在控制台输出”HelloWorld”
 */
interface Inter3 {
    void show();
}


//class Inter3Impl implements Inter3{
//    @Override
//    public void show() {
//        System.out.println("HelloWorld");
//    }
//}

class Outer3 {
    //补齐代码
    public static Inter3 method(){
//        return new Inter3Impl();
        //使用匿名内部类改进
        return new Inter3() {
            @Override
            public void show() {
                System.out.println("HelloWorld");
            }
        };

//        return ()->System.out.println("HelloWorld");
    }
}

class OuterDemo {
    public static void main(String[] args) {
        //method方法是直接通过Outer3类名进行访问,method方法在Outer3是被static修饰的
        //调用完method方法之后还可以继续调用show方法,就说明method的返回值是一个对象
        //因为最后调用的是show方法,在这个程序中只有在接口中看到一个show方法
        //所以method的返回值类型是Inter3类型
        Outer3.method().show();
    }
}

包的划分

包的划分好处:
    1、方便管理我们的代码文件
    2、不同包下的文件名可以是一样的

常见的包命名规则:
    1、按照功能划分
        增加
            - 学生增加
            - 老师增加
        删除
            - 学生删除
            - 老师删除
        修改
            - 学生修改
            - 老师修改
        查询
            - 学生查询
            - 老师查询
    2、按照角色划分
        学生
            - 学生增加
            - 学生删除
            - 学生修改
            - 学生查询

        老师
            - 老师增加
            - 老师删除
            - 老师修改
            - 老师查询
若某一维度不会大幅度或经常性修改的话,就可以考虑将该维度定义成一个包

springboot中层划分:
    configs: 存放配置文件
    controller: 主要前端页面与后端交互的入口
    dao: 主要是与数据库操作相关的代码
    entity[pojo]: 实体类层
    service: 业务层

标签:day09,show1,Java,fun1,void,class,初学,new,public
From: https://www.cnblogs.com/qianzhiqiang798/p/18469009

相关文章

  • Mybatis-plus 3.5.4 的AOP问题 java.lang.ClassCastException: class org.springfram
    报错,然后我把mapper上的@repository删掉就好了,为什么ChatGPT说:ChatGPT删除@Repository注解后问题解决,可能是与SpringAOP代理机制和MyBatisPlus结合时的一些细节有关。以下是原因分析:@Repository和SpringAOP代理的影响@Repository注解的主要作用是将类标记为持......
  • Java最全面试->Java基础->JavaSE->基础语法
    基础语法下边是我自己整理的面试题,基本已经很全面了,想要的可以私信我,我会不定期去更新思维导图哪里不会点哪里基本数据类型和方位修饰符数据类型有哪些基本数据类型byte、int、short、long、float、double、boolean、char引用数据类型类、数组、接口访问权限修饰符......
  • java计算机毕业设计IT培训机构教务管理系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的迅猛发展,IT培训机构在教育领域中的地位越来越重要。这些机构通常提供各种计算机相关的培训课程,旨在培养学生的实践能力和专业素养。......
  • java计算机毕业设计高校失物招领系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容高校失物招领系统的研究背景、意义和目的在当代高校生活中,失物招领是一个常见但又极其重要的问题。随着高校规模的不断扩大和学生人数的增多,校园内遗失物品的......
  • java计算机毕业设计患者监护系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着现代医学的发展,患者监护系统在医院中的应用越来越广泛。传统的患者监护主要依赖于医护人员的定期巡查和手动记录,这种方法不仅耗时耗力,而且容易因......
  • java计算机毕业设计工作流引擎在OA办公系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的发展,办公自动化(OA)系统已成为现代企业提升管理效率和决策支持能力的重要工具。工作流引擎作为OA系统的核心组件,负责流程的定义、执行和......
  • Java异常详解及处理机制(超详细附习题)
    文章目录异常写在开头:什么是异常?认识常见的异常和错误Java中如何表示异常的呢?处理异常机制异常处理之try-catch语法格式:举例:异常处理之finally块语法格式:举例:throws关键字throws的作用语法格式:拓展throws对重写方法的要求举例:throw关键字throws与throw的区别:自定义异......
  • java学习10.15
    今天学习了java图形化编程importjava.awt.*;importjava.awt.event.*;publicclassFramePractice{publicstaticvoidmain(String[]args){Frameframe=newFrame();//Frame是窗体,我们只需要创建这样一个对象就可以了,这样就会直接创建一个新的窗口......
  • JAVA输入输出,运算符
    1.输入输出packagecom.scanner;//1.导包importjava.util.Scanner;publicclassDemo1{publicstaticvoidmain(){print();}//需求:我是一个零基础小白,请帮我写一个程序,可以让用户键盘输入用户名和年龄,然后打印出来。publicstaticvoid......
  • 一. Java“速学通”之基础
    前言        Java急速学习课程是专为那些已经具备一定编程基础的同学设计的高效学习路径。这种学习方法摒弃了繁冗的理论堆砌,转而采用直接明了的代码示例与细致入微的注释来传授知识。每一个核心概念和技巧都通过精心挑选的实战代码片段来阐述,确保学习者能够通过观察......