Java06面向对象01

Java06面向对象01

Java06面向对象01

概念

Java06面向对象01
Java06面向对象01

回顾方法

Java06面向对象01

方法的定义与调用

package com.mingmao.javaobjectoriented;

public class MethodReview {
    public static void main(String[] args) {
        //方法的调用--main方法调用其他方法

        //静态方法 static,直接调用
        //同类可省略类名
        //同类 方法名
        say();
        //不同类 类名.方法名
        TestClass.say();

        //非静态方法,先实例化这个类再调用
        //同类不同类一样调用
        //同类
        MethodReview methodReview=new MethodReview();
        System.out.println(methodReview.sayHello());
        //不同类
        TestClass testClass=new TestClass();
        System.out.println(testClass.sayHello());
    }

    /*
    方法的定义:
    修饰符 返回值类型 方法名(参数列表){
        方法体
        return 返回值;
    }
     */
    public String  sayHello(){
        return "Hello world!";
    }

    //静态方法
    public static void say(){
        System.out.println("说话");
    }

    //方法之间的相互调用
    //非静态方法
    public void a(){
        //同类中 直接调用
        sayHello(); //非静态
        say(); //静态

        //不同类中
        //静态
        TestClass.say();
        //非静态
        TestClass testClass=new TestClass();
        testClass.sayHello();
    }

    //静态方法 只能调用静态方法,因为静态方法和类一起加载
    public static void b(){
        //同类
        say();//静态

        //不同类
        TestClass.say();//静态
    }
}
package com.mingmao.javaobjectoriented;

public class TestClass {
    //静态方法
    public static void say(){
        System.out.println("说话");
    }

    //非静态方法
    public String sayHello(){
        return "Hello World!";
    }
}

形参和实参

Java06面向对象01

传值与传址

基本数据类型是传值,引用数据类型看起来是传址,本质也是传值。

package com.mingmao.javaobjectoriented;

import java.util.Arrays;

public class ValueAndAddressTransmission {
    public static void main(String[] args) {
        //传值,只是把值传给方法,没传地址,copy值,基本数据类型
        int a=2;
        System.out.println(a);//2
        change(a);
        System.out.println(a);//2

        //传址,引用数据类型,本质还是值传递
        int[] arr={1,2,3};
        System.out.println(Arrays.toString(arr));//1,2,3
        changearray(arr);
        System.out.println(Arrays.toString(arr));//4,4,4

        //传址例2
        Person person=new Person();
        System.out.println(person.name);//null
        changeClass(person);
        System.out.println(person.name);//mingmao

    }

    //传值
    public static void change(int a){
        a=10;
    }

    //传址
    public static void changearray(int[] arr){
        Arrays.fill(arr,4);
    }

    //传址例2
    public static void changeClass(Person person){
        person.name="mingmao";
    }
}

class Person{
    String name;
}

类与对象的创建

Java06面向对象01
Java06面向对象01
规范:一个项目只有一个main方法
一个类中只有属性和方法

package com.mingmao.javaobjectoriented.programming;

public class Student {
    //属性
    String name;
    int age;

    //方法
    public void study(){
        System.out.println(this.name+"在学习");
    }
}
package com.mingmao.javaobjectoriented.programming;

public class Application {
    public static void main(String[] args) {
        //学生类
        //实例化类
        Student student=new Student();
        Student xiaoming=new Student();
        Student fangfang=new Student();

        //默认初始化值
        System.out.println(student.name+" "+student.age);
        student.study();
        //赋值
        xiaoming.name="小明";
        xiaoming.age=18;
        //调用属性和方法
        System.out.println(xiaoming.name+" "+xiaoming.age);
        xiaoming.study();
    }
}

构造方法(构造器)

package com.mingmao.javaobjectoriented.programming;

public class PersonConstructionMethod {
    //属性
    String name;

    //构造方法,new操作必须要有构造方法
    //无参构造,不要省略
    //空构造方法
    public PersonConstructionMethod(){

    }
   //构造方法没有返回值,可以用于初始化属性值
    /*public PersonConstructionMethod(){
        this.name="mingmao";
    }
     */


   //有参构造
    //一旦定义了有参构造,无参构造必须显式定义
    public PersonConstructionMethod(String name){
        this.name=name;
    }
  
 
}
package com.mingmao.javaobjectoriented.programming;

public class Application {
    public static void main(String[] args) {
        //创建无参对象
        PersonConstructionMethod person=new PersonConstructionMethod();
        System.out.println(person.name);
        //创建有参对象
        PersonConstructionMethod person1=new PersonConstructionMethod("mingmao");
        System.out.println(person1.name);
    }
}

生成构造方法的快捷方式:右键-Generate- Constructor

Java06面向对象01

创建对象内存分析

package com.mingmao.javaobjectoriented.programming;

public class PetMemoryAnalysis {
    public String name;
    public int age;

    //无参构造

    public void shout(){
        System.out.println("叫了一声");
    }
}
package com.mingmao.javaobjectoriented.programming;

public class Application {
    public static void main(String[] args) {
        PetMemoryAnalysis dog=new PetMemoryAnalysis();

        dog.name="旺财";
        dog.age=3;
        dog.shout();
        System.out.println(dog.name+" "+dog.age);

        PetMemoryAnalysis cat=new PetMemoryAnalysis();

    }
}

Java06面向对象01

小结

Java06面向对象01
Java06面向对象01

学习视频

学习视频

Java06面向对象01

上一篇:第四期“一生一芯”预学习阶段


下一篇:glob gflags