零基础入门学习Java课堂笔记 ——day05

面向对象(上)

面向过程:我打算列个计划表一步一步来

面向对象:我喜欢先分析分类,把复杂的问题简单化

1.什么是面向对象!!?

面向对象的本质就是:以类的方式组织代码,以对象的方式组织数据

  • 封装
  • 继承
  • 多态

类&对象:对象是类的具体事物,类是对象的抽象概念

类即是对象的模板.....

2.方法回顾

定义一个方法:

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

    }
	/*
		修饰符 返回值类型 方法名(...){
			//代码体
			return 执行结果;
		}
	*/
    
    //定义一个add方法
    public static int add(int a,int b){
        return a+b;//return 代表结束
    }
}

3.方法调用

区分静态方法:加入static为静态方法反之为非静态方法

public class Demo4 {

    public static void main(String[] args){
        //调用静态方法
        say2();

        //调用非静态方法 先要用new创建类的对象 通过对象调用
        //say1(); error!!!
        Demo4 d4 = new Demo4();
        d4.say1();
        //d4.say2(); error!!!
    }

    //实例化后才存在
    public void say1(){
        System.out.println("Static");
    }
	
    //和类一起加载
    public static void say2(){
        System.out.println("No static");
    }
    
    public static void say3(){
        say1(); //error!!!!
    }

}

4.值传递和引用传递

值传递:传递后是传递参数的复制版本

引用传递:传递后可以通过传递的参数修改传递的变量

//值传递
public class Demo4 {

    public static void main(String[] args){
        int b = 5;
        change(b);
        System.out.println(b); //5
    }

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

}
//引用传递
public class Demo4 {

    public static void main(String[] args){
        Student student = new Student();

        System.out.println(student.name); //Null
        change(student);
        System.out.println(student.name); //Hxk
    }

    public static void change(Student stu){
        stu.name = "Hxk";
    }

}

//定义一个student类
class Student{
    String name;

}

总结:在Java中如果传递的是变量即为值传递,如果是对象就是引用传递(实际分析的话还是值传递)

Java都是值传递

5.类与对象的关系

    • 类是一种抽象的数据类型 它是对一类事物的具体描述/定义,但不代表某一类具体事物
  • 对象
    • 对象是抽象概念的具体实例

如何创建一个对象??


new:使用new关键词创建对象的时候,除了分配内存外还会给创建好的对象就行默认的初始化,以及对构造器的调用

构造器:类中的构造器也称构造方法,是就行创建对象时必须调用的

  • 1.必须和类的名字相同
  • 2.必须没有返回类型 void也不行

构造器必须掌握

//App.java
package pro;
import pro.Student;

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

        //类实例化后会返回自己的对象!!!
        Student stu = new Student();

        System.out.println(stu.name); //null
        stu.name = "Xiao Hong";
        System.out.println(stu.name); //Xiao Hong
    }
}

//Student.java
package pro;

public class Student {
    String name;
    int age;

    public void run(){
        System.out.println(name+" is running.");
    }
}

6.构造器详解

构造器作用

​ 1.使用new关键字本质调用构造器(不写系统默认创建)

​ 2.用来初始化值

​ 3.一旦显示了有参构造,无参数构造就必须显示定义

//App.java
package pro;
import pro.Person;

public class App {
    public static void main(String[] args){
        Person per = new Person("Hxk",18);
        System.out.println("He name is " + per.name);//Hxk
    }
}

//Person.java
package pro;

public class Person {
    String name = "";
    int age = 0;
    public Person(String name,int age){
        System.out.println("You are creat a person");
        this.age = age;
        this.name = name;
    }
}
上一篇:python第二期-day05


下一篇:Java基础--day05