面向对象与面向过程
什么是面向对象
方法调用的回顾
public class Student {
//静态方法
public static void say(){
System.out.println("学生说话了");
}
}
public class Demo01 {
public static void main(String[] args) {
Student.say();
}
}
这是静态方法的调用,即方法定义的时候有static修饰符。
public class Student {
//非静态方法
public void say(){
System.out.println("学生说话了");
}
}
public class Demo01 {
public static void main(String[] args) {
//实例化这个类 new
//对象类型 对象名 = 对象值
Student student = new Student();
student.say();
}
}
非静态方法的调用
a()方法和b()方法如果都是static或者都是普通方法,都可以互相调用。
如果a()方法是静态方法,而b()不是,则不能在a()方法里调用b()方法。
因为静态方法是和类一起加载的,而非静态的方法是类实例化才加载的,即new了之后。
JAVA都是值传递
类与对象的关系
创建与初始化对象
//一个项目应该只存在一个main方法
public class Application {
public static void main(String[] args) {
//类:抽象的,要实例化
//类实例化后会返回一个自己的对象
//student(xiaoming、xiaohong)对象就是一个Student类的具体事例
Student xiaoming = new Student();
Student xiaohong = new Student();
xiaoming.name = "小明";
xiaoming.age = 18;
xiaohong.name = "小红";
xiaohong.age = 18;
}
}
//学生类
public class Student {
//属性:字段
public String name;
public int age;
//方法
public void study(){
System.out.println(this.name+"在学习");//this表示当前这个类的对应属性字段
}
}
构造器
也叫构造方法
public class Application {
public static void main(String[] args) {
Person person = new Person();
}
}
public class Person {
}
Person类里面什么都没有的情况下,但是依然可以实例化Person类的对象
在.class文件里会生成一个和类名一致的方法,且返回值为空
即一个类即使什么都不写,也会存在一个方法。即构造方法
public class Person {
//显示的定义构造器
String name;
//实例化初始值
//1.使用new关键字,必须要有构造器(默认会有无参构造器),new本质在调用构造器
//2.构造器一般用来初始化值
public Person(){
this.name = "jxr";
}
//有参构造:一但定义了有参构造,无参就必须显示定义
public Person(String name){
this.name = name;
}
}
public class Application {
public static void main(String[] args) {
Person person = new Person("jxr");//重载
System.out.println(person.name);//jxr
}
}
alt + insert快捷键会自动生成构造器
内存分析(简易图)