首页 > 编程语言 >java面向对象

java面向对象

时间:2025-01-15 20:24:29浏览次数:1  
标签:java name 对象 System 面向对象 println public out

java面向对象

1. 类和对象

1.1 类和对象的理解

客观存在的事物皆为对象 ,所以我们也常常说万物皆对象。

    • 类的理解
      • 类是对现实生活中一类具有共同属性和行为的事物的抽象
      • 类是对象的数据类型,类是具有相同属性和行为的一组对象的集合
      • 简单理解:类就是对现实事物的一种描述
    • 类的组成
      • 属性:指事物的特征,例如:手机事物(品牌,价格,尺寸)
      • 行为:指事物能执行的操作,例如:手机事物(打电话,发短信)
  • 类和对象的关系
    • 类:类是对现实生活中一类具有共同属性和行为的事物的抽象
    • 对象:是能够看得到摸的着的真实存在的实体
    • 简单理解:类是对事物的一种描述,对象则为具体存在的事物

1.2 类的定义

类的组成是由属性和行为两部分组成

  • 属性:在类中通过成员变量来体现(类中方法外的变量)
  • 行为:在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可)

类的定义步骤:

①定义类

②编写类的成员变量

③编写类的成员方法

学生:

​ 属性:学号,姓名,年龄

​ 行为:吃饭,睡觉

//在一个java文件中,可以写多个class类,但是只能由一个类被public修饰而且这个类贺java文件名保持一致
public class 类名 {
	// 成员变量:类中方法外定义,表示一个类的属性   id, name, age
    int id;
    String name;
    int age;
	变量1的数据类型 变量1;
	变量2的数据类型 变量2;
	…
	// 成员方法:表示一个类的行为 eat()  sleeep()
        public void eat(){
        System.out.println("吃饭")
    }
     public void sleep(){
        System.out.println("睡觉")
    }
	方法1;
	方法2;	
}
//如何通过一个类创建一个类的对象
//语句定义格式:类名 对象名 = new 类名();
//数据类型  变量名 = 初始值;
Student s1 = new Student();
System.out.println(s1);

//获取成员变量
//对象名。成员变量名
int i = s1.id;
System.out.println(i);
System.out.println(s1.name);
System.out.println(s1.age);
System.out.println("=========================");
//给对象成员变量赋值
s1.id = 1001;
s1.name = "杨浩东";
s1.age = 18;
System.out.println(s1.id);
System.out.println(s1.name);
System.out.println(s1.age);

对象

1.概述:一类事物的具体体现

2.使用:

a.导包: import 包名.类名
如果两个类在同一个包下,想要使用对方的成员不需要导包
如果两个类不在同一个包下,想要使用对方的成员需要导包

特殊包:java.lang -> 使用lang包下的类不需要导包 -> String
    
友情提示:在学四种权限修饰符之前,尽量让两个类在同一个包下

b.创建对象:想要使用哪个类中的成员,就new哪个类的对象
类名 对象名 = new 类名() -> 比如: Person person = new Person()

c.调用成员(成员变量,成员方法) -> 想要使用哪个类中的成员,就用哪个类的对象去点哪个成员
对象名.成员变量名 = 值
对象名.方法名() -> 调用的是无参无返回值方法
对象名.方法名(实参) -> 调用的是有参无返回值方法
数据类型 变量名 = 对象名.方法名() -> 调用的是无参有返回值方法
数据类型 变量名 = 对象名.方法名(实参) -> 调用的是有参有返回值方法

public class Person {
    //属性-> 成员变量
    String name;
    int age;

    //行为 -> 成员方法
    public void eat(){
        System.out.println("吃饭");
    }

    public void drink(){
        System.out.println("喝水");
    }
}

public class Demo01Person {
    public static void main(String[] args) {
        Person person = new Person();
        System.out.println(person.name);
        System.out.println(person.age);
        person.name = "杨浩东";
        person.age = 22;
        System.out.println(person.name);
        System.out.println(person.age);

        person.eat();
        person.drink();

    }
}

对象创建和使用示意图

一个对象的创建和使用

成员变量和局部变量的区别

1.定义位置不同(重点)

a.成员变量:类中方法外
b.局部变量:定义在方法之中或者参数位置

2.初始化值不同(重点)

a.成员变量:有默认值的,所以不用先手动赋值,就可以直接使用
b.局部变量:是没有默认值的,所以需要先手动赋值,再使用

3.作用范围不同(重点)

a.成员变量:作用于整个类
b.局部变量:只作用于自己所在的方法,其他方法使用不了

4.内存位置不同(了解)

a.成员变量:在堆中,跟着对象走
b.局部变量:在栈中,跟着方法走

5.生命周期不同(了解)

a.成员变量:随着对象的创建而产生,随着对象的消失而消失
b.局部变量:随着方法的调用而产生,随着方法的调用完毕而消失

public class Person {
    String name;//成员变量
    public void eat(){
        int i = 10;//局部变量
        System.out.println(i);

        System.out.println(name);//成员变量不用手动赋值可以直接使用,因为有默认值
    }

    public void drink(){
        int j;
        //System.out.println(j);//局部变量没有默认值,所以需要手动赋值再使用
        System.out.println(name);

        //System.out.println(i);//i是eat方法的局部变量,在drink中使用不了
    }
}

例子:

需求:定义一个类MyDate,属性有 year month day

再定义一个类Citizen(公民类),属性有 name(String类型) birthday(MyDate类型) idCard(String),为这三个属性赋值,然后将值取出来

public class MyDate {
    int year;
    int month;
    int day;
}

public class Citizen {
    //姓名
    String name;  //默认值 null
    /*
      生日  MyDate类型

      MyDate属于自定义类型(引用数据类型)
      这种类型要操作之前必须要赋值
      怎么赋值?  需要new对象赋值
     */
    MyDate birthday = new MyDate(); // 默认值 null
    //身份证
    String idCard;  //默认值null
}

public class Test01 {
    public static void main(String[] args) {
        Citizen citizen = new Citizen();
        citizen.name = "涛哥";
        citizen.idCard = "111111111";

        /*
           citizen.birthday获取的是MyDate对象
           再去点year获取的是MyDate对象中的year

           链式调用
         */
        citizen.birthday.year = 2000;
        citizen.birthday.month = 10;
        citizen.birthday.day = 10;

        System.out.println(citizen.name+","+citizen.birthday.year+","+citizen.idCard);

    }
}

给引用数据类型赋值,需要new对象(String比较特殊,可以直接=赋值)

标签:java,name,对象,System,面向对象,println,public,out
From: https://www.cnblogs.com/03270925yhd/p/18673669

相关文章

  • Java常用类
    一、字符串相关的类1、String类及常用方法String类:代表字符串。Java程序中的所有字符串字面值(如"abc")都作为此类的实例实现。String是一个final类,代表不可变的字符序列。字符串是常量,用双引号引起来表示。它们的值在创建之后不能更改。String对象的字符内容是存储在一个......
  • Java RestTemplate 发送 POST 请求设置请求体示例
    在Java中使用RestTemplate​发送POST请求并设置请求体(body)参数,可以按照以下步骤进行。RestTemplate​是Spring提供的一个用于发送HTTP请求的工具类。示例代码以下是一个完整的示例,展示如何使用RestTemplate​发送POST请求并设置请求体参数:importorg.sp......
  • java第二章数组
    java第二章数组数组的概念和特点数组的概念数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。数组的特点特点是一个可以存储同一种数据类型元素的容器,对于同一个数组而言,里面的元素类型都是一样。数......
  • java 反序列化 URLDNS 链
    常用于探测反序列化漏洞是否存在的一条链,之前调过cc6,这条应该比较简单,自己随便调调就行.URL直接来看hashCode方法publicsynchronizedinthashCode(){if(hashCode!=-1)returnhashCode;hashCode=handler.hashCode(this);re......
  • Java 大数据自动化数据管道构建:工具与最佳实践(47)
           ......
  • 深挖 Java8的Stream.flatMap:你不知道的流式操作技巧
    flatMap()是Java8StreamAPI的核心方法之一,主要用于将嵌套结构展开并生成一个新的流。它的强大之处在于能够处理复杂数据结构并将其转换为简单的线性流。以下是flatMap()的常见用法和应用场景:1.将嵌套集合展开为单一流用法处理嵌套的List或Set,将其扁平化为单一流。......
  • Java面向对象---多态
    1多态的形式多态是继封装、继承之后,面向对象的第三大特性。多态是出现在继承或者实现关系中的。多态体现的格式:父类类型变量名=new子类/实现类构造器;变量名.方法名();多态的前提:有继承关系,子类对象是可以赋值给父类类型的变量。例如Animal是一个动物类型,而Cat......
  • 【开源免费】基于SpringBoot+Vue.JS在线课程管理系统(JAVA毕业设计)
    本文项目编号T137,文末自助获取源码\color{red}{T137,文末自助获取源码}......
  • 【开源免费】基于SpringBoot+Vue.JS社团管理系统(JAVA毕业设计)
    本文项目编号T136,文末自助获取源码\color{red}{T136,文末自助获取源码}......
  • 【开源免费】基于SpringBoot+Vue.JS企业OA管理系统(JAVA毕业设计)
    本文项目编号T135,文末自助获取源码\color{red}{T135,文末自助获取源码}......