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;//修改用户名
    }
    //其余同理
}
相关推荐
Scott9999HH7 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
腻害兔7 小时前
【若依项目-产品经理视角】深度拆解 RuoYi-Vue-Pro 商城模块:从商品管理到交易引擎,50 张表撑起一整套电商系统
java·大数据·vue.js·产品经理·ai编程
码智社8 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
AI云海8 小时前
python 列表、元组、集合和字典
开发语言·python
萧瑟余晖9 小时前
JDK 26 新特性详解
java·开发语言
马优晨9 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
a11177611 小时前
2FA 验证码生成器(github登录验证 app)
笔记·学习
我的xiaodoujiao11 小时前
API 接口自动化测试详细图文教程学习系列32--Allure测试报告2
python·学习·测试工具·pytest
人邮异步社区11 小时前
怎么把C语言学到精通?
c语言·开发语言
心平气和量大福大12 小时前
C#-WPF-控件-TextBox 数据绑定
开发语言·c#·wpf