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;//修改用户名
    }
    //其余同理
}
相关推荐
FakeOccupational19 小时前
【电路笔记 信号】DBPSK 波形查找表+脉冲成形(升余弦+根升余弦滤波)
开发语言·笔记
打工仔折腾 AI20 小时前
工业场景下时序库与实时计算一体化架构选型实践对比
java·开发语言·后端·python·性能优化·架构·ai agent 实战
ZealSinger20 小时前
Java虚拟线程上线后瓶颈转移到哪看三层
java·开发语言·firefox
2601_9611332820 小时前
盘立方软件指标文华期货公式下载
java
蜗牛互联网20 小时前
长任务多Agent共享文件系统的Manifest交接模式
java·人工智能·后端
传奇开心果编程20 小时前
【SwiftUI提高练中学】第13课 实时活动与灵动岛:ActivityKit 实战
学习·ui·ios·swiftui·swift
欣欣之王来了20 小时前
Python入门:什么是Python以及为什么选择它
学习·架构·面向对象·项目·python教程
Sirens.20 小时前
Java并发锁详解:六类锁策略与 synchronized 底层原理
java·前端·算法
dadaobusi21 小时前
pcie原子操作和nvme原子操作
学习
sunshine22 girl21 小时前
Java学习五 面向对象高级5 内部类1
java·学习