调用java中的类

1.Java中,类中的静态方法不能直接调用动态方法。只有将某个内部类修饰为静态类,然后才能够在静态类中调用该类的成员变量与成员方法。
加了static就是静态类了
2.调用非静态方法:没有使用static修饰符修饰的方法,就是非静态方法,调用这种方法的时候是一定要使用对象的。因为非静态方法是属于对象的。
非静态属性也一样
3.在一个类中,静态方法之间可以相互调用,非静态方法之间也可以相互调用,非静态方法可以调用静态方法,静态方法不能调用非静态方法
4.java中调用非静态方法要先把类赋值给对象,没有定义类的话就把当前创建java函数文件名当作类,赋值方法是:类名 变量名=new 类名()
5.调用静态方法直接类名加方法()
6.值传参和引用传参

调用方法进行传参时,分为值传递和引用传递两种。
如果参数的类型是基本数据类型,那么就是值传递。
如果参数的类型是引用数据类型,那么就是引用传递。
值传递是实参把自己变量本身存的简单数值赋值给形参.
引用传递是实参把自己变量本身存的对象内存地址值赋值给形参.
所以值传递和引用传递本质上是一回事,只不过传递的东西的意义不同而已.

7.this关键字
在类中,this关键字可以起到一些特殊作用
【区别成员变量和局部变量】 //其实这个不太理解
【调用类中的其他方法】 //这个也可以说明this在类中表示当前类将来创建出的对象.
【调用类中的其他构造器】

import java.io.IOException;

public class object_oriented { //非静态类
    /*Java中,类中的静态方法不能直接调用动态方法。
    只有将某个内部类修饰为静态类,
    然后才能够在静态类中调用该类的成员变量与成员方法。
    加了static就是静态类了 */
    public static void main(String[] args) {
        //从代码运行角度考虑是先有类后又对象
        // 类是对象的模板


        //调用非静态方法:没有使用static修饰符修饰的方法,就是非静态方法
        // 调用这种方法的时候是一定要使用对象的。因为非静态方法是属于对象的。
        // 非静态属性也一样
        Student m = new Student();
        m.print("java中调用非静态方法要先把类赋值给对象,没有定义类的话就把当前创建java函数文件名当作类,赋值方法是:类名 变量名=new 类名()");
        // 调用静态方法直接类名加方法()
        int a11 = Student.max(4, 2);
        System.out.println("调用静态方法直接类名加方法()"+a11);

        //值传参
        int a = 1;
        System.out.println("before: a = "+a); //1
        Student.changeNum(a);
        System.out.println("after: a = "+a); //1


        //引用传递
        Student1 s = new Student1(); //非静态类之间的调用,可直接用类名调用外部的类
        System.out.println("before: name = "+s.name); //null
        changeName(s);
        System.out.println("after: name = "+s.name); //tom

    }
    public static void changeName(Student1 s){ //下面也有个和changeName一样的函数
        s.name = "tom";
        }        

    // this在类中的作用
    

    public static class Student{  //加了static静态类
        private String name;
        public void setName(String name){
        //this.name表示类中的属性name
        this.name = name; // 【区别成员变量和局部变量】
        }

        public void print1(){
            //表示调用当前类中的setName方法
            this.setName("tom"); //【调用类中的其他方法】
            //默认情况下,setName("tom")和this.setName("tom")的效果是一样的
            }

        //下面这2句是java中的构造器
        // 调用类中的其他构造器
        public Student(){
            //调用一个参数的构造器,并且参数的类型是String
            this("tom"); ////并且这局调用的代码只能出现在构造器// 中的第一句.
            } //this的这种用法,只能在构造器中使用.普通的方法是不能用的.
        public Student(String name){
        this.name = name; 
        }
        // this在类中表示当前类将来创建出的对象.
                

        public static int max(int a,int b){ //静态类中可有静态方法,非静态方法
            int c = a>b?a:b;
            System.out.println(c);
            return a>b?a:b;
        }
        public static void changeNum(int a){
            a = 10;
            System.out.println("这个changNum中的值会被外界相同得变量改变么是10么:"+a);
            }
                    
        public String sayHello(){
            return "hello";
            // print("sss");
        }
        public void print(String msg){
            System.out.println(msg);
            sayHello();
            /* 在一个类中,静态方法之间可以相互调用,非静态方法之间也可以相互调用
            非静态方法可以调用静态方法,静态方法不能调用非静态方法 */
        }
        

        //异常抛出类型
        // public void readFile(String file)throws IOException{

        // } //不能同时使用两个相同的方法
        public void readFile(String file)throws IOException,ClassNotFoundException{}
        }
        
            
}
class Student1{
    String name;}
posted @ 2021-08-01 15:41  索匣  阅读(563)  评论(0编辑  收藏  举报