面向对象及方法的调用

面向对象及方法的调用

面向对象

  • 面向对象编程的本质是:以类的方式组织代码,以对象的组织封装数据
  • 三大特性:
    1. 封装
    2. 继承
    3. 多肽
  • 从认识角度考虑是先有对象后有类,从代码的角度考虑是先有类后有对象,类是对象的模板

方法的调用

  • 同一个包中的类可以直接使用,直接用类名点调用其中的方法

  • 调用本类中的静态方法可以直接用方法名就可以

    例如:

    public static void main(String[] args){
            a();
        }
        public static void a(){
            System.out.println("我是一个静态方法");
        }
    
  • 调用同一个包中的另一个类中的静态方法,需要用类名点方法名进行调用

    public static void main(String[] args){
            xuexi.b();
        }
    
  • 调用同一个包中的另一个类中的非静态方法,需要new一个该类的对象,用对象调用他的方法

    例如:

    public static void main(String[] args){
            //对象类型  对象名 = 对象值
            xuexi xuexi = new xuexi();//new了xuexi类的对象
            xuexi.b();//对象调用方法
        }
    
  • 调用本类中的非静态方法,也需要new一个本类的对象,用对象进行调用

    例如:

    public class lianxi1 {
        public static void main(String[] args){
            //对象类型 对象名=对象值
            lianxi1 name = new lianxi1();
            name.a();
        }
        public void a(){
            System.out.println("我是一个静态方法");
        }
    }
    
  • 注意:

    静态方法是不能调用非静态方法的,因为静态方法是和类一起加载的,而非静态方法创建对象后才存在,所以他们有时间差,静态方法出现的时候非静态方法还没有出现呐

    除了这种情况,其他情况的方法调用方法都是可以的

    例如:

    public static void i(){
            a();//掉不出来a方法,因为a是非静态方法
        }
    

值传递

举例说明:

public static void main(String[] args){
        int a=1;
        xx(a);//a执行力此方法后a的值还为1,a只是给这个方法进行了传值,并没有将a本身传给方法,这就是值传递
        System.out.println(a);
    }
    public static void xx(int a){
        a=10;
    }

引用传递

举类说明:

public class Demo05 {
    public static void main(String[] args) {
        Person person = new Person();
        System.out.println(person.name);//输出为空
        Demo05.change(person);
        System.out.println(person.name);//输出对象,这就是引用传递
    }
    public static void change(Person person){
        person.name="对象";
    }
    static class Person{
        String name;
    }
}

posted on   汪汪程序员  阅读(463)  评论(0编辑  收藏  举报

编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示