首页 > 编程语言 >Java:类和对象(2)

Java:类和对象(2)

时间:2024-09-11 21:22:25浏览次数:12  
标签:Java String 对象 System Student println public out

一 对象的构建和初始化

1.对象构建 (Object Construction)

Student student1=new Student("zhangsan",12,"123456");
Student student2=new Student("lisi",10,"15236");

2. 构造函数(Constructor)

构造函数的特性:

  • 名字与类名相同。
  • 没有返回类型。
  • 可以重载(多个构造函数可以具有不同的参数列表)。
2.1有参数构造方法 
 public Student(String name,int age,String stuNum){
        this.name=name;
        this.age=age;
        this.stuNum=stuNum;
        System.out.println("带有三个参数的构造方法");
    }
2.2无参数构造方法
 public Student(){
        this.name="lisi";
        this.age=18;
        this.stuNum="123456";
        System.out.println("无参数的构造方法");
    }

3. 对象初始化 (Object Initialization)

3.1在声明字段时赋值
public class Student {
    String name = "lisi";
    int age = 20;
    String num="123456"
}
3.2构造代码块处赋值 (Initialization Block) 

静态代码块

 static {
        //定义在类当中,方法的外面,一般用于初始化静态成员的初始值
        classNum="114";
        System.out.println("静态代码块一般用来初始化静态成员变量");
    }

实例代码块 

{
        this.name="pig";
        System.out.println("实例代码块");
    }

注:

Java 对象的构建和初始化主要通过 new 操作符、构造函数、字段初始化、构造代码块以及静态代码块来完成。每个对象的生命周期从构造开始,直到被垃圾回收器销毁。

二 封装

在 Java SE 中,封装(Encapsulation) 是面向对象编程(OOP)中的一种核心概念。封装的目的是将对象的状态(字段/属性)隐藏起来,并通过公开的方法(访问器、修改器)来访问和修改这些属性。这种机制能够保护对象的内部状态不被随意修改,增强代码的安全性和可维护性。 

1.封装的基本原则

  1. 将字段声明为 private,防止外部直接访问。
  2. 提供 public 的 getter 和 setter 方法,用于控制对私有字段的访问和修改。
  3. 通过 setter 方法可以添加业务逻辑来限制对属性的修改,而不是直接操作属性。

2.封装的优点

  • 数据隐藏:外部类无法直接访问对象的内部数据。
  • 控制访问:可以在 getter 和 setter 中增加逻辑,控制数据的访问权限。
  • 灵活性:可以根据需要修改内部实现,而不影响使用该类的其他代码。
  • 提高可维护性:减少错误发生的机会,并使代码更易维护。
public class Student {
    private String name="wangda";
    private int age;
    private double score;
    private static String classNum="1班";

利用getter 和 setter 方法,用于控制对私有字段的访问和修改 

public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }

    public static String getClassNum() {
        return classNum;
    }

    public static void setClassNum(String classNum) {
        Student.classNum = classNum;
    }

3.对封装的使用

 public static void main1(String[] args) {
        Student student1=new Student("zhangsan",12,"123456");
        Student student2=new Student("lisi",10,"15236");
        student1.setName("zhangsan");
        System.out.println(student1.getName());
        student1.setAge(12);
        System.out.println(student1.getAge());
        student1.setStuNum("123456");
        System.out.println(student1.getStuNum());
        student2.setName("lisi");
        System.out.println(student2.getName());
        student2.setAge(10);
        System.out.println(student2.getAge());
        student2.setStuNum("15236");
        System.out.println(student2.getStuNum());

    }

4.访问修饰符及他们的权限

 

5. 封装的好处

  • 增强代码的安全性:通过限制直接访问对象的属性,可以防止外部代码对对象进行不合法的操作。
  • 维护性和可扩展性:封装让我们可以轻松修改类的内部实现,而不影响使用该类的其他代码。
  • 保护不变性:在 setter 方法中可以添加数据验证,确保对象始终处于有效状态。

注:封装是 Java 面向对象编程中的重要原则之一,通过将类的字段设为 private 并提供 public 的 getter 和 setter 方法,可以确保对象的状态只能通过受控的方式进行访问和修改。封装使代码更加安全、易于维护,并且更容易扩展。 

default属性:只能被本包中类访问 。

public属性: 可以任何其他类访问。

private属性:只能在类中访问,不能被其他类访问 

三 包(Package)

在 Java SE 中,包(Package) 是一种用于组织类和接口的机制。包提供了一种层次化的结构,以便更好地管理代码,并避免类名冲突。Java 中的每个类都属于某个包,未显式声明包的类属于默认包。 

1.包的概念

包在 Java 中的作用类似于文件夹,提供了一种分类和管理类、接口的方式。通过包,开发者可以对项目中的类进行分组,使代码更加结构化。

2.包的作用

  • 避免类名冲突:不同开发者可以创建相同名称的类,但通过包来区分它们,避免名称冲突。
  • 访问控制:包提供了额外的访问权限控制,不同包中的类之间的访问权限可以通过访问修饰符进行控制。
  • 提高代码的可维护性:将类按功能分组可以使代码更加易读和易于维护。
  • 方便类的查找和使用:通过包的层次结构,可以快速定位和使用类。

3.包的创建

package com.b.www;

public class TEST2 {

}

在上面的例子中,TEST2类属于 com.b.www包。package 声明必须是源文件中的第一条语句,除非有 package 之前的注释或许可声明。 

4.包的命名规则

Java 包的命名通常使用公司或组织的互联网域名的反向写法作为包名的一部分,例如:

  • com.companyname.projectname:公司名和项目名作为包的前缀。
  • org.organizationname.product:使用组织名和产品名。

这有助于确保包名的全局唯一性。包名中的每个部分都必须是有效的 Java 标识符,通常采用小写字母。

5.包的导入

5.1导入单个类
import java.util.Arrays;
import java.util.Date;
5.2导入整个包 
import java.util.*;
import java.util.*;

四 static(静态的) 

在 Java SE 中,static 关键字用于声明类的成员(属性和方法)为静态的,即这些成员属于类本身,而不是类的实例(对象)。这意味着静态成员在类的所有实例之间共享,不依赖于具体对象进行调用。

1. 静态变量 (Static Variables)

  private static String classNum="1班";

特点

  • 静态变量在所有对象间共享。
  • 无需通过对象,静态变量可以通过类名直接访问
  • 静态变量在类加载时初始化,并在类的整个生命周期内保持。
   public static void main2(String[] args) {
        //都可以表示静态成员的打印
        System.out.println(Student.classNum);
        System.out.println(Student.getClassNum());

2.静态变量的 getter 和 setter 方法

public static String getClassNum() {
        return classNum;
    }

    public static void setClassNum(String classNum) {
        Student.classNum = classNum;
    }

3.静态方法(Static Methods)

public static int add(int a,int b){
        return a+b;
    }

4.静态代码块

static {
        //定义在类当中,方法的外面,一般用于初始化静态成员的初始值
        classNum="114";
        System.out.println("静态代码块一般用来初始化静态成员变量");
    }

五 对象的打印

public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", score=" + score +
                '}';
    }

public static void main(String[] args) {
        Student student=new Student("lis",12,13);
        System.out.println(student);
        System.out.println(student.toString());
    }

 打印结果:

希望能对大家有所帮助!!!!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

标签:Java,String,对象,System,Student,println,public,out
From: https://blog.csdn.net/blamep/article/details/142146833

相关文章

  • Java——多态
    什么是多态:        多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。可能不太懂是什么意思,那首先来简单实现一个:(看效果!!)     classAnamals{Stringname;Stringcolor;public......
  • Day07.Java方法
    Java方法方法的定义和调用Java方法是语句的集合,它们在一起执行一个功能方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中被创建,在其他地方被引用设计方法的原则:方法的本意是功能块,就是实现某个功能的语句块的集合。我们设计方法的时候,最好保持方法的......
  • 22年国内最牛的Java面试八股文合集,不接受反驳
    又是一年金三银四面试季!纵观今年的技术招聘市场, Java依旧是当仁不让的霸主 !即便遭受Go等新兴语言不断冲击,依旧岿然不动。究其原因:Java有着极其成熟的生态,这个不用我多说;Java在运维、可观测性、可监控性方面都有着非常优秀的表现;Java也在积极应对容器化、云原生......
  • Java方法
    方法类似其它语言的函数形参:定义实参:实际调用传递的参数方法的重载重载就是在一个类中,有相同的函数名称,但是形参不同的函数可变参数/不定向参数packagemethod;publicclassDemo02{publicstaticvoidmain(String[]args){Demo02demo02=newDemo02......
  • Java数据库轮询
    在Java中,数据库轮询(DatabasePolling)通常指的是定期查询数据库以检查是否有新的数据或者数据状态的变化。这种方式在某些场景下是有用的,比如在需要实时监控数据库变化的应用中。不过,轮询并不是一种高效的解决方案,因为它可能会导致不必要的资源消耗,特别是在没有变化发生的时候。以......
  • 力扣49 字母异位词分组 Java版本
    文章目录题目描述题解注意事项题目描述给你一个字符串数组,请你将字母异位词组合在一起。可以按任意顺序返回结果列表。字母异位词是由重新排列源单词的所有字母得到的一个新单词。示例1:输入:strs=[“eat”,“tea”,“tan”,“ate”,“nat”,“bat”......
  • java计算机毕业设计民宿出租管理系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景:随着旅游业的蓬勃发展和人们对个性化旅行体验的追求,民宿作为一种新兴的住宿方式,在全球范围内迅速崛起。它以其独特的文化氛围、灵活的租赁方式及亲民......
  • Java中数学类的学习
    数学类目录数学类Math类math的floor,round和ceil方法实例比较Math类Java的Math包含了用于执行基本数学运算的属性和方法,如初等指数、对数、平方根和三角函数。Math的方法都被定义为static形式,通过Math类可以在主函数中直接调用。publicclassTest{publicst......
  • java计算机毕业设计老年人营养膳食咨询平台(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着全球人口老龄化的加速,老年人的健康问题日益成为社会关注的焦点。老年人群体由于其生理机能逐渐衰退,对营养的需求更为特殊且复杂。然而,当前社会普......
  • java计算机毕业设计模特兼职网站(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,电子商务与社交媒体的深度融合,模特行业正经历着前所未有的变革。传统模特行业依赖于线下经纪公司及行业内部推荐,效率相对较......