Java学习day5-面向对象具体学习1

类的设计具体

定义类

java 复制代码
public class 类名{
    //成员变量:修饰符 数据类型 变量名称=初始化值(一般不进行赋值,默认为初始化值)
    /*    初始化值:byte short int long为0;
                   float double为0.0;
                   boolean为false;
                   引用类型为null */
    //成员方法
    //构造器
    //代码块
    //内部类
}

例如定义一个Student类

首先新建

java 复制代码
public class Student {//类名首字母建议大写
    //属性
    String name;
    int idnumber;
    double averagegrade;

    //行为
    public void printfname(){
        //打印此学生姓名
        System.out.println(this.name);
    }

    public void printfid(){
        //打印学号
        System.out.println(this.idnumber);
    }

}

之后我们就可以创建类的对象

java 复制代码
Student s=new Student();

然后就可以使用这个对象

java 复制代码
        s.name="李明";
        s.idnumber=12345678;
        s.averagegrade=96.5;

        s.printfid();
        s.printfname();

运行结果

定义规则:一个Java文件中可以定义多个class类,但只能定义一个public类,且public修饰的类名必须为文件名

this函数的用法上一篇有写,具体就是用来区分成员变量(全局变量)与局部变量,当变量名相同时,调用全局变量时须加this.,否则调用局部变量

构造方法

格式如下

java 复制代码
public class 方法名{
    修饰符 类名(参数){
        方法体;
   }
}

如果我们不进行构造方法的定义,系统将给出一个默认的无参的构造方法,定义后则不再提供默认构造方法

定义构造方法步骤如下

空参构造方法

每次创建对象时都会调用一次构造方法

java 复制代码
public Student(){
        System.out.println("true");
    }

此时再运行上文代码就会得到如下结果

带参构造

java 复制代码
public  Student(String name,int id){
        this.name=name;//为成员变量赋值
        this.idnumber=id;
    }

此时就可以如下创建一个Student对象

java 复制代码
Student s1=new Student("小丽",123458);
        s1.printfid();;
        s1.printfname();;

运行结果

如果类里面只有有参构造,则再创建对象时须输入变量,即如果类里只有上文第二种构造方法,则不能在创建时写

java 复制代码
Student s=new Student();

所以无论是否使用无参构造或有参构造,都建议将两种方法都写入类内

标准JavaBean类

JavaBean指符合特定编码约定的Java类,用于Java中封装数据

  • 类名需要见名知意
  • 成员变量需要使用private修饰
  • 至少提供无参、带参两种构造方法
  • 需要提供每一个成员变量对应的setXX()/getXX()方法

举例:

java 复制代码
public class User {
    //属性
    private String name;
    private String sex;
    private  int age;


    //空参
    public User(){};
    //带参
    public User(String name,String sex,int age){
        this.name=name;
        this.sex=sex;
        this.age=age;
    }

    //get和set方法
    public String getName(){
        return name;//提供用户名
    }
    public void setName(String name){
        this.name=name;//修改用户名
    }
    //其余同理
}
相关推荐
不得了zz8 分钟前
04-Spring AI Alibaba ReactAgent 生产级实践:工具调用、结构化输出、HITL 与上下文管理
java·ai编程·springaialibaba
猿究院_夏燊19 分钟前
SpringMVC 到底是怎么干活的?
java·网络·职场和发展
鶴哥只手遮天20 分钟前
Spring Framework 7.0.9 深度剖析-05-配置元数据解析:XML、注解与 JavaConfig
java·后端·开源
NGINX开源社区27 分钟前
与我们交流:NGINX Gateway Fabric 与 NGINX Ingress Controller 社区会议
java·服务器·前端
鶴哥只手遮天31 分钟前
Spring Framework 7.0.9 深度剖析-16-异步与调度
java·后端·开源
十年Java程序媛38 分钟前
Java 多线程基础与锁机制|进程线程、synchronized、volatile、Lock 面试全梳理
java·spring boot·面试
弈栈录39 分钟前
大模型服务抽象:兼容 OpenAI、通义千问与本地模型
java·后端·架构
鶴哥只手遮天1 小时前
Spring Framework 7.0.9 深度剖析-06-Bean 生命周期与依赖注入原理
java·后端·开源
唐钰小宝B1 小时前
深度解读 JDK 8、JDK 11、JDK 17 和 JDK 21 的区别
java·开发语言·windows
golang学习记1 小时前
最新版VS Code开发Spring Boot项目保姆级教程
java·spring boot·vscode·后端