当前位置: 首页 > web >正文

java基础学习(四):类 - 了解什么是类,类中都有什么?

目录

    • (一)定义类
    • (二)访问权限
    • (三)类的实例化
    • (四)类中都有什么?
      • 1. 属性(成员变量)
      • 2. 方法

面向过程编程:只针对当前这一件事,可扩展性不好
面向对象编程:抽离出事务,后续调方法
面向对象:java类以及类的成员(属性、方法、构造方法、代码块、内部类)、面向对象的特征(封装、继承、多态、接口)、关键字(this、super、final、static)

(一)定义类

  • class 类名{}在花括号中写该类的所有事务
  • 类中只有一个主类,可有多个其它类
  • 主类的名字与文件名一致
    public class Cat{//主类事务
    }
    class Gog{
    }
    class Person{
    }
    

(二)访问权限

  • public:仅限于使用当前这个类的主类当中

(三)类的实例化

  • 就是创建对象,声明一个变量
    public class Cat{//主类public static void main(String[] args) {Cat cat = new Cat();Cat cat1 = new Cat();}
    }
    
  • new Cat():就是类的实例化,在堆中开辟Cat空间
  • Cat():调用本类的构造方法,不管是否调用,都有构造方法
    public class Cat {public static void main(String[] args) {Cat cat = new Cat();}//Cat()的构造方法public Cat() {super();// TODO Auto-generated constructor stub}
    }
    

(四)类中都有什么?

类中有属性(成员变量)和方法。

1. 属性(成员变量)

(1)普通属性(对象属性)

  • 不挂staticpublic int age;
  • 通过构造对象进行访问,对象.属性:cat.age

(2)静态属性(类属性)

  • staticpublic static int weight;
  • 两种访问方式:
    1. 可直接通过类名访问:类.属性 Cat.weight
    2. 通过构造对象进行访问,对象.属性 cat.weight
public class Cat {//属性(成员变量)//普通属性(对象属性)public int age;//静态属性(类属性)public static int weight;
}
public class Test {public static void main(String[] args) {System.out.println(Cat.weight);Cat cat = new Cat();System.out.println(cat.age);System.out.println(cat.weight);}
}

属性

2. 方法

(1)普通方法

  • 对象方法(非静态方法)
    • 不用static修饰
    • 调用方法:创建对象调方法,对象名.方法名(参数),对象方法可调用类方法 Cat cat = new Cat(); cat.run(3, 4);
    • 对象方法可以调对象方法和类方法
  • 类方法(静态方法)
    • static修饰
    • 两种调用方法:
      1. 直接调方法,类名.方法名(参数) Cat.jump(2, 5);
      2. 创建对象调方法,对象名.方法名(参数) Cat cat = new Cat(); cat.jump(5, 6);
    • 类方法可调用类方法
    • 类方法调用对象方法需要先创建对象
public class Cat {//普通方法//对象方法(非静态方法)public void run(int a, int b) {System.out.println("run方法执行啦");//对象方法调对象方法和类方法eat();jump(8, 9);}public void eat() {System.out.println("eat方法执行啦");}//类方法(静态方法)public static void jump(int a, int b) {System.out.println("jump方法执行啦");//类方法可调用类方法fly();//类方法调用对象方法Cat cat = new Cat();cat.eat();}public static void fly() {System.out.println("fly方法执行啦");}
}
public class Test {public static void main(String[] args) {//方法调用//类方法直接调用Cat.jump(2, 5);//创建对象,用对象调方法Cat cat = new Cat();cat.run(3, 4);cat.jump(5, 6);}
}

方法

  • 方法签名:由方法名和参数列表组成。
    方法名相同,参数列表不同,方法签名就不同,那方法就是不同的。
    参数列表包括:
    1. 参数数量
    2. 参数类型
    3. 参数顺序
    public class Cat {public static void fly() {System.out.println("fly方法执行啦");}public static void fly(int a) {System.out.println("fly方法执行啦");}
    }
    
    注意:参数名不同不作为执行标准。
  • 函数重载 :在同一个类中,方法名相同,参数列表不同,与返回值无关
    减少功能相同逻辑的方法命名,减少同系列的命名。

(2)构造方法

  • 构造方法的方法名要与文件名一致
  • 一个类中至少有一个无参构造方法
  • 以后将无参构造方法写上,后续框架会使用无参构造方法
  • 没有返回值
  • 创建对象,开辟空间
    	public class Cat {//构造方法public Cat() {}}```
    
  • 代码块{}
    • 普通代码块 写在方法内部
    • 构造代码块 写在类中
    • 静态代码块 被static修饰
    • 作用:可以完成一些初始化的操作
      public class Test {public static void main(String[] args) {{System.out.println("普通代码块");}}{System.out.println("构造代码块");}static {System.out.println("静态代码块");}
      }
      
  • 对象的初始化顺序(执行顺序):
    • 属性 = 代码块 > 构造方法
    • 静态属性 = 静态代码块(谁先执行看书写的顺序)> 属性 = 构造代码块(谁先执行看书写的顺序)> 构造方法
      注意:静态只执行一次,只在第一次加载时执行,所有静态只由第一个对象触发
    • 父类 > 子类
    • 父类静态 > 子类静态 > 父类非静态 > 父类构造方法 > 子类非静态 > 子类构造方法
http://www.xdnf.cn/news/20322.html

相关文章:

  • 25年下载chromedriver.140
  • 项目必备流程图,类图,E-R图实例速通
  • 面试 TOP101 贪心专题题解汇总Java版(BM95 —— BM96)
  • 实力登榜!美创科技荣膺数说安全《2025中国网络安全企业100强》
  • IDEA中Transaction翻译插件无法使用,重新配置Transaction插件方法
  • 基于飞算JavaAI的在线图书借阅平台设计实现
  • Process Explorer 学习笔记(第三章 3.2.2):定制可显示的列与数据保存
  • Linux 入门到精通,真的不用背命令!零基础小白靠「场景化学习法」,3 个月拿下运维 offer,第二十七天
  • Bug排查日记:从崩溃到修复的实战记录
  • Nginx +Tomcat架构的必要性与应用示例
  • Kafka 消息队列:揭秘海量数据流动的技术心脏
  • 具身智能多模态感知与场景理解:融合语言模型的多模态大模型
  • 【关系型数据库SQL】MySql数据库基础学习(一)
  • 高级RAG策略学习(五)——llama_index实现上下文窗口增强检索RAG
  • 在本地使用Node.js和Express框架来连接和操作远程数据库
  • 从“找新家”到“走向全球”,布尔云携手涂鸦智能开启机器人新冒险
  • 突发奇想,还未实践,在Vben5的Antd模式下,将表单从「JS 配置化」改写成「模板可视化」形式(豆包版)
  • langchain 提示模版 PromptTemplate
  • Coze源码分析-资源库-编辑提示词-后端源码
  • 苹果TF签名全称TestFlight签名,需要怎么做才可以上架呢?
  • 如何选择靠谱的软文推广平台?这份行业TOP5清单请查收~
  • AGENTS.md: AI编码代理的开放标准
  • RL【3】:Bellman Optimality Equation
  • 支付DDD建模
  • [光学原理与应用-409]:设计 - 深紫外皮秒脉冲激光器 - 元件 - 窗口镜设计:高透射率、抗损伤与精密调控的终极方案
  • 容器镜像全生命周期管理:从Artifactory制品库搭建到构建节点高效运维
  • Go语言实现以太坊Web3开发
  • 【LeetCode 热题 100】1. 两数之和——(解法二)哈希表
  • 使用tensorRT8部署yolov8/11目标检测模型(1)
  • 无密码登录与设备信任:ABP + WebAuthn/FIDO2