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;//修改用户名
    }
    //其余同理
}
相关推荐
梦帮科技4 分钟前
量子纠缠网络与量子隐形传态攻防:量子中继器信道串扰、纠缠态保真度降解与量子路由劫持
开发语言·网络·人工智能·算法·自动化·php
老王IT24 分钟前
C语言语法基础语法介绍
c语言·开发语言·算法
cfm_291431 分钟前
Leaf-segment号段模式
java
Wang's Blog33 分钟前
Java 项目实战: 交友项目 - 发布圈子动态:数据库表和接口文档介绍
java·数据库·交友
paopaokaka_luck34 分钟前
智慧电玩店管理系统(空闲机台随机分配、游玩时长概率模拟、积分自动结算、积分兑换闭环、 ECharts经营分析、 腾讯地图选址)
java·人工智能·mysql·echarts·推荐算法
LMT流氓兔1 小时前
第五单元——第9课:防止同一次操作重复执行
java·服务器·数据库·算法·ai·langchain
m4Rk_1 小时前
【论文阅读】Agent记忆机制(109):MemComposer——用强化学习学会选哪些记忆、选多少以及怎样排序
论文阅读·人工智能·学习·开源·github
zhangdaliangmvp1 小时前
快速排序的学习理解:从基础分治到三路划分优化
c++·学习·算法
OxYGC1 小时前
Spring 面经系列 · 第 6 篇:Spring MVC 请求全流程、父子容器与零配置原理
java·spring·mvc
code2cat1 小时前
Java高级篇之JDBC:连接数据库,完成查询、更新与事务
java·开发语言·数据库