首页 > 编程语言 >Java 初学 day05

Java 初学 day05

时间:2024-09-25 15:02:08浏览次数:5  
标签:Java 变量 对象 成员 day05 初学 private 方法 public

Java day 05

1、面对对象

1、面对对象和面对过程的区别

面对过程思想:代表语言 C语言 功能开发中的每一步都是自己参与的

面对对象思想:代表语言 Java语言 指的是不断创建对象,指挥对象完成事情的思想

2、举例生活中的例子

​ 接水:

​ 面对过程思想:自己拿水杯,自己走到饮水机前,自己接水。

​ 面对对象思想:让别人拿水杯,让别人走到饮水机前,让别人接水。

3、伪代码

//需求:将大象装进冰箱

//面对过程思想:
class Demo{
    public static void main(String[] args){
        //打开冰箱门
        
        //大象跳进冰箱
        
        //关闭冰箱门
    }
}



//面对对象思想:
/*
1、都有哪些事物?
	判断事物的方法:
		1)UML课程知识
		2)名词提取法
			大象,冰箱,测试类

2、事物中都有什么?
	大象:
		属性:身高,体重,性别......
		行为:跳进冰箱,吃饭,睡觉......
	冰箱:
		属性:颜色,容量,大小......
		行为:打开冰箱门,关闭冰箱门......
	测试类:
		main方法
		
3、事物和事物之间是什么关系?
	在测试类中创建大象对象和冰箱对象
*/
class 大象{
    //属性
    身高;
    体重;
    性别;
    
    //行为
    跳进冰箱(){
        ....
    }
    
    吃饭(){
        ....
    }
    
    睡觉(){
        ....
    }
}

class 冰箱{
    //属性
    颜色;
    容量;
    大小;
    
    //行为
    打开冰箱门(){
        .....
    }
    
    关闭冰箱门(){
        ....
    }
}



class test{
    public static void main(String[] args){
        //创建一个大象对象
        //创建一个冰箱对象
        //调用冰箱对象中的打开冰箱门的方法
        //调用大象中跳进冰箱的方法
        //调用冰箱对象中的关闭冰箱门的方法
    }
}

4、类和对象的关系

类:相当于图纸

对象:相当于通过图纸造出来的一辆车

5、面对对象的三大特征

封装、继承、多态

代码案例

import java.util.Scanner;


/*
    学生:                      class Student:
        属性:姓名,年龄,性别          成员变量:name,age,gender
        行为:吃饭,睡觉               成员方法:eat(){},sleep(){}

 */
public class Student {
    //成员变量,定义在类中方法外
    String name;
    int age;
    String gender;

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

    public void sleep() {
        System.out.println("睡觉");
    }
}
//这个类里不需要有main方法的,因为这个类只是用来描述student的属性行为的

class Demo1 {//再写一个类,要创建对象啦!!再一个类!
    
    public static void main(String[] args) {
        //创建一个学生对象
        //如何通过一个类创建一个对象
        // 语法格式:类名 对象名 = new 类名();
        //new在这里创建了一个新对象
        Student s1 = new Student();
        //获取对象中的成员变量
        //对象名.成员变量名
        String n1 = s1.name;
        System.out.println("姓名:" + n1);
        s1.name = "江川";
        System.out.println("姓名:" + s1.name);

        //如何使用对象中的成员方法
//        eat();
        //对象名.成员方法名()
        s1.eat();
        s1.sleep();
    }
}

6、private关键字

	我们按照今天说的类和对象的知识,创建了一个Person对象,并且也成功赋值了姓名和年龄。但是我们可以赋值一些不合实际的数值,这是不应该出现,所以我们应该在赋值之前,要先判断一下要赋的值是否合理。既然是加判断,就不是一句话可以搞定的,我们可以定义一个方法,使用方法对成员变量赋值
    我们确实可以通过加一个方法来对成员变量进行赋值,但是谁规定了我必须要用这个方法呢?我们依旧可以使用原来的方式进行赋值,我们如果可以通过一些手段,让外界无法直接获取成员变量,这样就不得不使用方法进行赋值了。
    java提供一个关键字给我们使用:private 私有的


private:
可以修饰成员变量,成员方法,构造方法
在同一个类中,private关键字不起作用,相当于透明,同一个类中被private关键字修饰的成员可以随意访问
说到现在,其实说的就是面对对象编程的三大特征之一:封装

封装:使用private关键字将类中细节进行隐藏,只对外提供公共的访问方式。

一个标准类的写法:最终是4.0版本

​ 1.0版本:使用private关键字修饰成员变量

	类:
		成员变量:使用private关键字修饰
		成员方法:针对每一个成员变量提供对应公共的setXxx()和getXxx()
class Person {
    private String name;
    private int age;

    public String getName(){
        return name;
    }

    public void setName(String n){
        name = n;
    }

    public int getAge(){
        return age;
    }

    public void setAge(int i) {
        if (i > 0 && i <= 130) {
            age = i;
        }else {
            System.out.println("输入的年龄不合实际!");
        }
    }

    private void fun1(){
        System.out.println("好好学习,天天向上!");
    }

    public void show1(){
        fun1();
    }
}

public class PersonDemo {
    public static void main(String[] args) {
        //创建一个Person类的对象
        Person p1 = new Person();
//        System.out.println("姓名:" + p1.name);
//        System.out.println("年龄:" + p1.age);
        System.out.println("姓名:" + p1.getName());
        System.out.println("年龄:" + p1.getAge());
        System.out.println("-------------------------");
//        p1.name = "江川";
//        p1.age = 1800;
        p1.setAge(1800);
        p1.setName("江川");
//        System.out.println("姓名:" + p1.name);
//        System.out.println("年龄:" + p1.age);
        System.out.println("姓名:" + p1.getName());
        System.out.println("年龄:" + p1.getAge());
        System.out.println("------------------------");
//        p1.fun1();
        p1.show1();
    }
}

补充:

匿名对象

//匿名对象,指的是没有名字的对象,只能用一次,后续无法继续使用该对象

d1.method(new Teacher());//new Teacher() 就是一个匿名对象

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

  1. 在类中的位置不同
    成员变量 类中方法外
    局部变量 方法内或者方法声明上
  2. 在内存中的位置不同
    成员变量 堆内存
    局部变量 栈内存
  3. 生命周期不同
    成员变量 随着对象的存在而存在,随着对象的消失而消失
    局部变量 随着方法的调用而存在,随着方法的调用完毕而消失
  4. 初始化值不同
    成员变量 有默认的初始化值
    局部变量 没有默认的初始化值,必须先定义,赋值,才能使用。

形式参数
当今后看到类做参数时候,调用时需要传入该类的对象【或者该类的字对象】

标签:Java,变量,对象,成员,day05,初学,private,方法,public
From: https://www.cnblogs.com/qianzhiqiang798/p/18431393

相关文章

  • java中的向下转型
    当我们构建一个父类引用指向子类对象的时候,该对象只能调用子类已经被重写的方法,而不能调用自己其他的方法,这时候就要用到向下转型classZi1extendsFu1{@Overridepublicvoidfun1(){System.out.println("李刚现在开始好好学习,天天向上!");}pub......
  • 最强Java100道核心面试题
    1.讲讲你理解的nio和bio的区别是啥,谈谈reactor模型。IO(BIO)是面向流的,NIO是面向缓冲区的BIO:BlockIO同步阻塞式IO,就是我们平常使用的传统IO,它的特点是模式简单使用方便,并发处理能力低。NIO:NewIO同步非阻塞IO,是传统IO的升级,客户端和服务器端通过Channel(通道)通......
  • 2024年 Java 面试八股文(25w字)
    Java有哪些数据类型?Java语言的数据类型分为两种:基本数据类型和引用数据类型。1.基本数据类型包括boolean(布尔型)、float(单精度浮点型)、char(字符型)、byte(字节型)、short(短整型)、int(整型)、long(长整型)和double(双精度浮点型)共8种,如下表所示。基本类型位数字节默认值int3240......
  • Java开发:文件上传和下载
    一、文件上传使用MultipartFile类型接收参数;调用上传有两种方式:方式一:使用curl命令curl-F"file=@/data/filename.txt"http://localhost:8080/upload--verbose方式二:使用html,写一个form表单:同样是POST请求,为何文件上传的功能会慢?其中一个原因是,使用multipart/fo......
  • Java基础部分-运算符
    算术运算符:+,-,*,/,%,++,--inta=10;intb=20;intc=25;intd=25;System.out.println(a+b);System.out.println(a-b);System.out.println(a*b);System.out.println(a/(double)b);//强制转......
  • 程序员必备Java面试题大总结!
    1、Mysql索引1.1索引的类型可以是String类型吗?聚簇索引----数据和索引放一块,像主键索引,具有唯一性(Innodb就是)数据库第一范式:必须要有id,这个id是自带索引的。一般用自增id,字符串可以做id,但是不好,像uuid做的id是随机的,都没有排序!!!不像自增id维护索引的成本会很低1.2什么是......
  • 双token三验证Java实现(解决单token可能存在的问题)
    1.单token存在的问题在正常的业务中,我们经常用到JWT生成单token进行后续的请求验证,但该模式有没有存在什么问题吗?其实是有问题的,主要是token有效期设置长短的问题,如果设置的比较短,用户会频繁的登录,如果设置的比较长,会不太安全,因为token一旦被黑客截取的话,就可以通过此tok......
  • 学习JAVA前的基础部分
    常用关键字:1.所有的标识符都应该以字母(A—Zanda-z),美元符($),下划线(_)开始,首字符之后可以是字母,美元符,下划线或者任何数字。2.Java所需要的组成部分都需要名字。类名、变量名以及方法都需要被称为标识符。3.标识符是大小写敏感的数据类型​ 强类型语言:要求变量的使用要严格符合......
  • Java基础部分-变量
    Java是一种强类型语言,每个变量都必须声明其类型Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。typevarName[=value][{,varName[=value]}];//数据类型变量名=值;可以使用逗号隔开来声明多个同类型变量。//类变量staticstaticdoublesal......
  • Understanding the difference between a Java keystore and a truststore
    Atruststoreisafilethatcontainsoneormorepubliccertificates,butnoprivatekeys. Akeystoreisafilethatcontainsoneormorepubliccertificatesandoneormoreprivatekeys.Thisistypicallya"chain"wherethekeystorecontain......