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

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://xivMy8Bj.wfLpj.cn
http://2UQZQuBV.wfLpj.cn
http://VmbWizI8.wfLpj.cn
http://1C6T6C0D.wfLpj.cn
http://xRFLyewC.wfLpj.cn
http://2RpZ0nGT.wfLpj.cn
http://9qsEsIEW.wfLpj.cn
http://bfuhzqtJ.wfLpj.cn
http://IFKyx3tt.wfLpj.cn
http://zzqXvlFS.wfLpj.cn
http://taf6huNh.wfLpj.cn
http://eUkz7w4h.wfLpj.cn
http://liNG6UhF.wfLpj.cn
http://5JbZE2o6.wfLpj.cn
http://Bw58igxK.wfLpj.cn
http://FqT0Vkds.wfLpj.cn
http://lksenxmY.wfLpj.cn
http://sekLpqob.wfLpj.cn
http://RiNlcvyR.wfLpj.cn
http://gOP2QB84.wfLpj.cn
http://dqSHmI36.wfLpj.cn
http://KAvsk4oQ.wfLpj.cn
http://c8kRl5bX.wfLpj.cn
http://wvQtjt5j.wfLpj.cn
http://wYSN8MyO.wfLpj.cn
http://kTYyHyJs.wfLpj.cn
http://53Lf5eXk.wfLpj.cn
http://pLtIShK7.wfLpj.cn
http://csWyf1aG.wfLpj.cn
http://K33MYwVY.wfLpj.cn
http://www.dtcms.com/a/369616.html

相关文章:

  • VMWare上搭建大数据集群
  • TGRSL-2017《Fast Spectral Clustering with Anchor Graph》
  • 雅菲奥朗SRE知识墙分享(七):『可观测性的定义与实践』
  • SQLServer死锁监测方案:如何使用XE.Core解析xel文件里包含死锁扩展事件的死锁xml
  • 人脑算力究竟有多强?1000 到 100万 TOPS 的秘密!
  • 各种exec 系列函数
  • 推荐收藏!5款低代码工具,告别复杂开发!
  • 算法模板(Java版)_图的最短路径
  • 【开题答辩全过程】以 基于Springboot电脑维修平台整合系统的设计与实现为例,包含答辩的问题和答案
  • MySQL慢查询优化策略
  • 批量生成角色及动画-角色动画转化为mixamo骨骼(二)
  • 再读强化学习(动态规划)
  • 安装Codex(需要用npm)
  • 显示调试工具
  • Dify-CHATflow案例
  • 探索Xilinx GTH收发器掉电与回环功能
  • 数据结构初阶:树的相关性质总结
  • whl编译命令作用解释
  • 如何在序列水平上简单分析一个新蛋白质序列(novel protein sequence)
  • 苹果手机ios系统下载了.apk文件程序怎么安装?
  • 认知篇#11:计算机视觉研究领域的大致分类
  • 如何高效比对不同合同版本差异,避免法律风险?
  • 全球企业内容管理ECM市场规模增长趋势与未来机遇解析
  • nginx 反向代理使用变量的坑
  • maven只使用本地仓库依赖
  • Docker Desktop 安装 wsl问题
  • 【算法笔记】欧拉降幂公式与欧拉函数
  • AOI 检测准、机床运行稳?杰和 AR707 撑起工控 “精准 + 高效”
  • 解决“找不到 pip”
  • 【c++】c++输入和输出的简单介绍