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;//修改用户名
    }
    //其余同理
}
相关推荐
djjjx.几秒前
【 C++ 】多态
开发语言·c++·多态
夜雪一千6 分钟前
Python如何使用XPath定位没有特征的元素?无id、无class通用定位技巧
开发语言·python
艾莉丝努力练剑15 分钟前
【QT:解决问题】Qt5Core.dll:无法定位程序输入点
java·开发语言·qt·学习·面试
流浪00123 分钟前
Python 基础语法(一):常量、变量、输入输出与运算符
开发语言·python
小蒜学长25 分钟前
“喵汪联盟”宠物领养系统的设计与实现(代码+数据库+LW)
java·spring boot·后端·宠物
程序员黑豆27 分钟前
Java字符串常量池完全指南:原理、intern()方法与性能优化最佳实践
java·前端·ai编程
光影少年27 分钟前
react离线缓存、图片缓存方案
开发语言·前端·javascript·react native·react.js·缓存·前端框架
AI人工智能+电脑小能手29 分钟前
大白话说Java设计模式-14-适配器模式(业务实战篇)
java·设计模式·适配器模式·系统兼容·多渠道对接
SomeB1oody32 分钟前
【RustyML入门】3.7. 循环层
开发语言·后端·机器学习·rust·教程
言乐63 小时前
Python游戏水平测试辅助系统
开发语言·python·游戏·django·pygame