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

11.java面向对象

java 面向对象

  • java 面向对象
    • 类的定义
      • 基本方法定义
      • 带有参数的方法
      • 方法的调用
      • 方法调用的特殊情况
    • 形参和实参
    • 值传递和引用传递
      • 值传递
      • 引用传递
    • 对象的创建

java 面向对象

类的定义

格式:修饰符 class 类名{}

// 创建类javademo01
public class javademo01 {

}

基本方法定义

方法名:见名知意,注意规范,最好采用驼峰命名法。

下面实例中:

  • String是返回值的数据类型
  • void​是返回空

// 创建类javademo01
public class javademo01 {

    // main方法
    public static void main(String[] args) {

    }

    // 定义方法,String是返回值的数据类型
    public String sayHello() {
        return "hello,world"; // 结束会有分号

    }


}

带有参数的方法

// 创建类javademo01
public class javademo01 {

    // main方法
    public static void main(String[] args) {

    }

    // 定义方法,String是返回值的数据类型
    public String sayHello() {
        return "hello,world"; // 结束会有分号

    }

    //带有参数的方法,比大小
    public int max(int a, int b) {
        return a > b ? a : b;    //三元运算符,a如果大则返回a,否则返回b
    }

}

方法的调用

  • 静态方法,带有static,一般情况下使用,类名和方法名直接调用。
  • 非静态方法,不带static,必须先实例化对象再调用。

举例1:现在有两个类分别是Student和test01,在Student类中有两个方法,静态方法say,非静态方法sayHello,现在我们来调用他们。

Student

package demo01;

public class Student {

    public static void say() {
        System.out.println("学生说话了!");

    }

    public void sayHello() {
        System.out.println("Hello,你好!");
    
    };

}

test01

package demo01;

public class test01 {
    public static void main(String[] args) {

        // 静态方法可以直接使用类名和方法名调用
        Student.say();

        //非静态方法的调用

        Student stu = new Student();
        stu.sayHello();
    }


  
}

方法调用的特殊情况

特殊情况方法依赖和嵌套

情况1:a依赖b方法

    public static void a (){
        b();   
    }
  
    public static void b (){
    
    }

这种是可以的。因为都是静态方法

    public static void a (){
        b();
    }
  
    public void b (){
      
    }

这个是不行的!!!!

不行的原因是:静态方法是和类一起被加载,但是非静态方法是随着对象被创建后才存在。这里没有实例化对象,所以这个是不行的

形参和实参

package demo01;

public class test02 {

    public static void main(String[] args) {
        int add = test02.add(1,2);
        System.out.println(add);

    }

    public static int add(int a, int b) {
        return a + b;
    }

}

值传递和引用传递

值传递

package demo01;
//传递值
public class test03 {
    public static void main(String[] args) {
        int a = 1;
        System.out.println(a);  //1

        test03.change(a);
        //虽然传递进去了,但是因为change没有返回值,所以还是1
      
        System.out.println(a);  //1
    }
    //返回值为空
    public static void change(int a) {
        a = 10;
    }
}

引用传递

引用传递:对象,本质还是值传递

package demo01;

public class test04 {
    public static void main(String[] args) {
        Person person = new Person();
        System.out.println(person.name); //null
        test04.change(person);
        System.out.println(person.name); //刘德华

    }

    public static void change(Person person){
		//这里的person是一个对象
        person.name = "刘德华";
    }
}

//定义一个Person类,有一个属性name
class Person{
    String name; //null
}

对象的创建

创建类

package demo01;

public class Student{
    String name;
    int age;

    public void study() {
        System.out.println("我叫" + this.name + "我今年" + this.age + "岁了");
    }
}

创建对象

package demo01;

public class test06 {

    public static void main(String[] args) {
        Student xm =new Student();
        xm.name = "小明";
        xm.age = 13;
        xm.study();		//我叫小明我今年13岁了

    }
}


http://www.kler.cn/a/307348.html

相关文章:

  • SHA-256哈希函数
  • Redo与Undo的区别:数据库事务的恢复与撤销机制
  • C++ 编程基础(6)作用域 | 6.3、类作用域
  • CTF攻防世界小白刷题自学笔记13
  • SQL面试题——奔驰SQL面试题 车辆在不同驾驶模式下的时间
  • vue请求数据报错,设置支持跨域请求,以及2种请求方法axios或者async与await
  • macOS上谷歌浏览器的十大隐藏功能
  • c语言中的常量定义(补充)
  • 【兼容性记录】video标签在 IOS 和 安卓中的问题
  • 队列-------
  • 英语学习交流平台|基于java的英语学习交流平台系统小程序(源码+数据库+文档)
  • EP12 分类列表元素点击跳转
  • 【云原生监控】Prometheus之PushGateway
  • 机器学习的入门指南
  • JVM HotSpot 虚拟机: 对象的创建, 内存布局和访问定位
  • Oracle数据库中的归档日志(Archive Log)详解与应用
  • 07_Python数据类型_集合
  • 系统 IO
  • 08_Python数据类型_字典
  • C# 记录一个获取系统空闲时间的函数,可用于判断休眠
  • 性能测试:Locust使用介绍(三)
  • MoCo对比损失
  • LC并联电路在正弦稳态下的传递函数推导(LC并联谐振选频电路)
  • 带你如何使用CICD持续集成与持续交付
  • 2024网络安全、应用软件系统开发决赛技术文件
  • Go语言现代web开发15 泛型和错误