面向对象的本质:以类的方式组织代码,以对象的形式封装数据
三大特性:封装、继承、多态
方法的调用
-
在Demo02类里调用Student类中的非静态方法
//学生类
public class Student {
//非静态方法
public void say(){
System.out.println("学生说话了");
}
}
在另一个类里调用
public class Demo02 {
public static void main(String[] args) {
//调用非静态方法:实例化这个类new
//对象类型 对象名 =对象值;
Student student=new Student();
student.say();
}
-
非静态方法 实例化之后才存在
public void a(){ //
b();
}
public void b(){
} -
静态方法static是和整个类一起加载的
public static void a(){ //static是和整个类一起加载的
b();
}
public static void b(){
}
-
在一个类中调用静态方法
public class Demo03 {
public static void main(String[] args) {
Demo03.add(1,2);
}
public static int add(int a,int b){
return a+b;
}
}
-
在一个类中调用非静态方法
public class Demo03 {
public static void main(String[] args) {
new Demo03().add(1,2);
}
public int add(int a,int b){
return a+b;
}
}
创建与初始化对象
使用new关键字创建对象的时候,除了分配内存空间外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用
构造器
特点:
-
必须和类的名字相同
-
必须没有返回类型,也不能写void
-
public class Person {
//一个类即使什么都不写,它也会存在一个方法
//无参构造器
String name;
//实例化初始值
//1.使用new关键字,本质是在调用构造器
//2.用来初始化值
public Person(){
}
//有参构造:一旦定义了有参构造,无参构造就必须显示定义
public Person(String name){
this.name=name;
}
}
测试
/*
public static void main(String[] args) {
Person person=new Person("nihao");
System.out.println(person.name);
}
构造器:
1.和类名相同
2.没有返回值
作用:
1.new 的本质是在调用构造器
2.初始化对象的值
注意点:
1.定义了有参构造后,必须显示的定义一个无参构造
*/