First knowledge of object-oriented
Process oriented & object oriented
Process oriented thought
- The steps are clear and simple, what to do in the first step and what to do in the second step
- Facing the process, it is suitable to deal with some relatively simple problems
Object oriented thought
- The thinking mode of classification is to first solve the problem of which classification is needed, then think about the classification separately, and finally think about the details of a classification process oriented
- Object oriented is suitable for dealing with complex problems and problems requiring multi person cooperation
For describing complex things, in order to grasp them macroscopically and analyze them reasonably as a whole, we need to use object-oriented thinking to analyze the whole system. However, when it comes to micro operation, we still need process-oriented thinking to deal with them.
What is object oriented
- Object oriented programming (OOP)
- The essence of object-oriented programming is to organize code by class and encapsulate data by object
- Object oriented is abstract
- Three major object-oriented features (these will be summarized in the later study)
- encapsulation
- inherit
- polymorphic
- From the perspective of epistemology, there are objects before classes. Objects are concrete things, classes are abstract, and objects are abstract
- From the perspective of code operation, there are classes before objects, and classes are the template of objects.
Review and deepening of methods
Definition of method
Modifier
- Public: public, which can be used by this package and other packages
- Static: static, which enables methods to be loaded together with classes
Return type
And the type of return value after the method body is executed
If there is no return value, it can be written as return; Or don't write a return statement
Method name
- Named after the hump principle
- Ask to see the name
parameter list
That is, parameter type, number, order, etc
Exception throw
We'll talk about this later
Just look at the format first
public void readfile(String file) throws IOException{ }
(at present, we have encountered the problem of array subscript out of bounds)
Method call
Non static method
Instantiate before calling
Static method
Are you curious about how my interface is so convenient and easy, as shown in the figure above:
The difference between the two
Let's look at some code first
This code does not report an error in idea
public class Demo01 { public static void main(String[] args) { } public void a(){ b(); } public void b(){ } }
The code does not report an error in idea
public class Demo01 { public static void main(String[] args) { } public static void a(){ b(); } public static void b(){ } }
This code does report an error
public class Demo01 { public static void main(String[] args) { } public static void a(){ b(); } public void b(){ } }
Why?
Because static modified methods are loaded with classes, while methods without static modification only exist after instantiation
Formal and argument
We analyze formal parameters and arguments in the code
public class Demo01 { public static void main(String[] args) { int add=Demo01.add(1,2); } public static int add(int a,int b){ return a+b; } }
In this code, a and b play the role of receiving 1 and 2 values. They are not actual variables, which are called formal parameters
public class Demo01 { public static void main(String[] args) { int a=1; System.out.println(a);//Output 1 change(a); System.out.println(a);//Output 1 } //No return value public static void change(int a){ a=10; } }
Both outputs are 1 because a in the change method is not an actual parameter
Value passing and reference passing
The above code is an example of value passing
For reference passing:
Note: a Java file can have multiple classes, but only one public class
import java.sql.SQLOutput; //Reference passing: object, essence or value passing public class Demo01 { public static void main(String[] args) { Person person=new Person(); System.out.println(person.name);//null change(person); System.out.println(person.name);//wqy } public static void change(Person person){ person.name="wqy"; } Defines a Person Class, there is one name attribute static class Person{ String name;//null } }
this keyword
//Student class public class Student { //Properties: Fields String name;//null int age;//0 //method public void study(){ System.out.println(this.name+"I'm learning");//this.name here points to a name with a null value } }
this will be explained in more depth in the future
Object creation analysis
Relationship between class and object
- Class is an abstract data type. It is the overall description / definition of something, but it can not represent a specific thing.
- Animals, plants, mobile phones, computers
- Person class, Pet class and Car class can all define and describe the characteristics and behavior of a specific thing
- Objects are concrete instances of abstract concepts
- Zhang San is a concrete example of man
- It is a concrete instance rather than an abstract concept that can reflect the characteristics and functions
Creating and initializing objects
- Create an object using the new keyword
- When using new to create an object, in addition to allocating memory space, it also initializes the created object by default and uses the constructor in the class
- Constructors in classes, also known as construction methods, must be called when creating objects, and constructors have the following two characteristics:
- Must be the same as the class name
- There must be no return value and void cannot be written
Code demonstration
Note: there should be only one main method in a project. And the values of name and age cannot be initialized in the Student class, otherwise the values of all objects in this class will be specified
constructor
First, let's observe a phenomenon:
The Person in the figure is a class we created
Open project structure:
Add content root:
Select the out directory at the same level as the project we created:
Find the Person file generated by decompilation:
Compared with the original class file, it is found that there is an additional piece of code formed by decompilation:
public Person(){}
It's actually a constructor
This tells us that even if a class doesn't write anything, there will be a method
We can also define a constructor ourselves:
The keyword this can also be used here:
There is also a constructor with parameters:
You can also define a constructor with multiple parameters
Constructor summary
- characteristic
- Same as class name
- No return value
- effect
- The essence of new is to call the constructor
- Initializes the value of the object
- Shortcut key: alt+insert new constructor
Note: after defining a parameterized constructor, if a parameterless construct is used, the definition of a parameterless construct will be displayed
Explanation of memory in Java
Recommend an article: https://blog.csdn.net/qq906627950/article/details/81324825
Because we haven't learned many things, we can look at them slowly in the future.