首页 > 编程语言 >JavaSE(6) - 面向对象-1

JavaSE(6) - 面向对象-1

时间:2023-09-15 14:49:16浏览次数:39  
标签:变量 构造方法 对象 成员 面向对象 JavaSE 方法 public

JavaSE(6) - 面向对象-1

p82 类和对象

  • 类 (*** 设计图*** ) : 是对象共同特征的描述;
  • 对象 : 是真实存在的具体东西.

在java中, 必须先设计类, 才能获得对象.

  1. 如何得到对象
public class 类名{
    1.成员变量(代表属性的,一般是名词)
    2.成员方法(代表行为的,一般是动词)
}
类名 对象名 = new 类名();
  1. 拿到对象后能做什么?
对象.成员变量;
对象.成员方法(...)

类的定义

  • 用来描述一类事物的类, 专业叫做 : Javabean类. 在Javabean类中, 是不写main方法的.

  • 在以前, 编写main方法的类, 叫做测试类. 我们可以在测试类中创建javabean类的对象并进行赋值调用.

类调用的补充注意事项

  • 类的首字母建议大写, 需要见名知意, 大驼峰模式. 并不能用关键字.
  • 一个java文件中可以定义多个class类, 且只能一个类是public修饰, 而且public修饰的类名必须成为代码文件名.实际开发中建议还是一个文件定义一个class类.
  • 成员变量的完整定义格式是 : 修饰符 数据类型 变量名 = 初始化值;,一般无需指定初始化值, 存在默认值.

小技巧 : 按住alt+左键 或者 滚轮+左键竖着多选

p83 封装

  1. 什么是封装
  • 告诉我们, 任何正确设计对象的属性和方法.
  • 原则 : 对象代表什么, 就得封装对应的数据, 并提供数据对应的行为.
  1. 理解封装思想的好处
    • 让编程变得简单, 有生命事, 找对象, 调用方法就行.
    • 降低我们的学习成本, 可以少学,少记,或者压根不用学,不用记对象有哪些方法, 有需要的时候去找就行.

private关键字

  1. private关键字是一个权限修饰符

  2. 可以修饰成员(成员变量和成员方法)

  3. 被private修饰的成员只能在本类中才能访问

  4. 针对private修饰的成员变量, 如果需要被其它类使用, 得提供相应的操作

  5. 提供" setXxx(参数)" 方法, 给成员变量赋值, 方法用public修饰

  6. 提供" getXxx(参数)" 方法, 获取成员变量的值, 方法用public修饰

p84 就近原则和this关键字

  1. 就近原则 :

    • System.out.println(age); - 先在局部找(方法内部),如果找不到就到类中(成员位置)找
    • System.out.println(this.age); - 不会到局部去找,只会在类中(成员位置)去找
  2. this的作用

    • 可以区别成员变量和局部变量

p85 构造方法

作用 : 在创建对象的时候,由虚拟机自动调用,给成员变量初始化(赋值)

格式 :

  1. 方法名与类名相同, 大小写也要一致
  2. 没有返回值类型, 连void都没有
  3. 没有具体的返回值(不能由return带回结果数据)

构造方法有两种:

  • 无参数构造方法 : 初始化对象时, 成员变量的数据均采用默认值
  • 有参数构造方法 : 初始化对象时, 同时可以为对象进行赋值.

执行时机 :

  1. 创建对象时由虚拟机调用, 不能手动调用构造方法
  2. 每创建一次对象, 就会调用一次构造方法

构造方法的注意事项

  1. 构造方法的定义

    • 如果没有定义的构造方法, 系统将给出一个默认的无参数的构造方法
    • 如果定义了构造方法, 系统将不再提供默认的构造方法
  2. 构造方法的重载

    • 带参构造方法和无参数构造方法, 两者方法名相同, 但是参数不同,这叫做构造方法的重载.
  3. 推荐的使用方法

    • 无论是否使用, 都手动书写无参构造方法, 和带全部参数的构造方法.
package Basic.Constructor;
//构造方法和get/set方法的写法
public class student {
    private String name;
    private int age;
    public student(){}//空参构造方法

    //带参构造方法
    public student(String name,int age){
        this.name = name;
        this.age = age;
    }
    //
    public void setName(String name){
        this.name = name;
    }
    public void setAge(int age){
        this.age = age;
    }
    public String getName(){
        return name;
    }
    public int getAge(){
        return age;
    }
    public void study(){
        System.out.println("study!");
    }
    public void eat(){
        System.out.println("eat!");
    }
}
//==========在测试类中定义===============================
package Basic.Constructor;
public class Demo {
    public static void main(String[] args) {
        //根据构造方法的参数给对象赋值
        student s = new student("George",8);
//        s.setAge(10);//用set方法给对象赋值
//        s.setName("George");
        //调用属性和方法
        System.out.print(s.getName()+" is "+s.getAge()+", He likes to ");
        s.study();
    }
}

p86 标准的JavaBean类

标准的JavaBean类

  1. 类名需要见名知意,大驼峰命名

  2. 成员变量使用private修饰

  3. 提供至少两个构造方法

    • 无参构造方法
    • 带全部参数的构造方法
  4. 成员方法

    • 提供每一个成员变量对应的 setXxx() / getXxx()
    • 如果还有其它行为, 也需要写上

自动生成构造方法,get / set 方法

快捷键 : alt + insert , alt + Fn + insert 在窗口中 CTRL + A 或者 shift + 左键 全选

**插件PTG 可以一秒生成标准JavaBean **

p87 对象的内存图

创建一个对象并加载的内存图

student s = new student();
  1. 加载class文件(student类的字节码文件)到方法区
  2. 声明局部变量(student s)
  3. 在堆内存中开辟一个空间(new关键字创建对象)
  4. 初始化(默认初始化) (显示初始化) (构造方法初始化)
  5. 把这个空间的地址值赋值给局部变量(s)

两个对象的内存图(创建两个空间)

如果出现两个new就会在堆内存中开辟两个内存空间,并且是独立,互不影响的.

两个引用指向同一个对象的内存图

只要有一个变量对对象发生了改变, 其它对象访问时也是改变了的.

p88 基本数据类型和引用数据类型

基本数据类型就是在本身的空间里的数据(加载方法的栈空间).

特点: 赋值给其它变量, 赋的是真实的值.

引用数据类型中存的是其它空间的地址值, "引用,引用" 就是拿别的空间里的数据来使用(指堆内存空间).

特点: 赋值给其它变量, 赋的是地址值(指向其它空间的地址).

p89 this的内存原理

this的作用 : 区分局部变量和成员变量.

this的本质 : 所在方法调用者的地址值.

p90 成员和局部

成员变量 : 类中方法外的变量

局部变量: 方法中的变量或者方法声明中(方法形参)

区别 成员变量 局部变量

初始化 有默认初始化值 没有,使用前要赋值

内存位置 堆的对象内存 栈的方法内存

生命周期 随对象的创建和消失 随着方法的调用和结束

作用域 这个类中有效 当前方法中有效

标签:变量,构造方法,对象,成员,面向对象,JavaSE,方法,public
From: https://www.cnblogs.com/lg369/p/17704957.html

相关文章

  • JavaSE(05) -方法
    JavaSE(05)-方法p63什么是方法什么是方法:方法是程序当中最小的执行单元.应用场景:重复的代码,具有独立功能的代码可以抽取的方法中.他的好处:提高代码的复用性和可维护性.p64简单的方法定义和调用方法的命名规则:见名之意,驼峰命名.方法的运行:看到方法......
  • Java面向对象编程
    今天开始面向对象了面向对象基础类:由属性和行为组成属性:在类中通过成员变量来体现行为:在类中通过成员方法来体现publicclass类名{//成员变量变量1的数据类型变量1;变量2的数据类型变量2;......
  • 25届实习/秋招-java面试-JavaSe面试题整理-牛客网
    JavaSe变量和运算符:基本数据类型介绍java中浮点数精度怎么解决,有了解过实现吗,为什么有精度问题BigDecimal,如何判断BigDecimal是否相等。如何进行计算、怎么四舍五入基本类型几种,分别占用空间int和Integer区别--包装类,int有几个字节。包装类常量池怎么判断相等的......
  • 面向对象
    面向对象的概念,在c语言时期就有了;比如某些操作系统内核、通信协议参考文章1参考文章2......
  • 面向对象魔术方法
    目录1.__setattr__如何使用2.__dict__如何使用1.__setattr__如何使用setattr是Python中的一个特殊方法(魔术方法),用于自定义对象的属性赋值操作。当您尝试设置对象的属性时,Python会自动调用setattr方法,允许您在属性赋值时添加自定义逻辑。这个方法可以用于数据验证、计算、......
  • 面向对象编程二(类属性与实例属性,类方法与实例方法)
    类属性与实例属性案例:#1.定义员工类Employee,属性:姓名,薪资#2.增加类属性:员工薪资信息列表#3.尝试添加对应的类方法,实例方法#类方法:对员工薪资进行排名#实例方法:每新增一个员工,添加到列表中#4.测试并执行打印结果classEmployee:salary_list=[]#2.增加......
  • JavaSE(IDEA)
    JavaSE(IDEA)publicclassMain{publicstaticvoidmain(String[]args){//单行注释////输出一个Hello,WorldSystem.out.println("Helloworld!");}}//多行注释/*注释*//*我是多行注释可以注释一段文字*/......
  • 面向对象编程一(类和对象的应用)
    1.类是什么?类是对具有相同属性的和行为的事物/物体的总称。又来描述同一事物的属性和行为。2.什么叫对象?客观存在的事物皆称为对象,具体一点说就是某一类事物的具体体现。3.类与对象的关系:类是对对象的描述,对象是类的具体体现。案例一:#定义一个Person类:#构建属性:姓名/年龄/性......
  • day七-Python之路 - 面向对象学习编程进阶
    Python之路,Day7-面向对象编程进阶 本节内容:面向对象高级语法部分经典类vs新式类静态方法、类方法、属性方法类的特殊方法反射异常处理Socket开发基础作业:开发一个支持多用户在线的FTP程序面向对象高级语法部分经典类vs新式类把下面代码用python2......
  • 前端歌谣-第八课-关于面向对象
    前言我是歌谣最好的种树是十年前其次是现在今天继续给大家带来的是面向对象的讲解环境配置npminit-yyarnaddvite-D修改page.json配置端口{"name":"demo1","version":"1.0.0","description":"","main":"index.js",......