面向对象(OOP)
本质:以类的方式组织代码,以对象的组织封装数据。
一个类只能有一个main方法,类里面只能有属性和方法
回顾之前接触的简单方法
方法分为静态方法和非静态方法,当方法中没有static时,需要实例化对象。
public class Demo01 {
public static void main(String[] args) {
// 如果调用类型是static可以直接用类名.方法进行调用
//Demo02.say();
//对象类型 对象名=对象值
Demo02 demo02=new Demo02();
demo02.say();
}
}
public class Demo02 {
//方法
public void say(){
System.out.println("学生上课说话");
}
}
static是和类一起创建的,时间片较长
一个类里面只能有一个public class,但是能有多个class
值传递
public class Demo03 {
public static void main(String[] args) {
int a=1;
System.out.println(a);//a=1
Demo03.change(a);
System.out.println(a);//a=1 因为在这里只是将a=1的值传递给了形式参数a,但是change类并没有返回值,不会改变a的值
}
public static void change(int a){
a=10;
}
}
引用传递
public class Demo04 {
public static void main(String[] args) {
Person person=new Person();
System.out.println(person.name); //null
Demo04.change(person);
System.out.println(person.name); //秦将
}
public static void change(Person person){
person.name="秦将";
}
}
class Person{
String name;
}
面向对象深入理解
从代码运行角度,是先有类再有对象。
类是一个抽象的,比如所有人Person就是一类,而人中的小明、小红则是一个具体的对象,所以在定义时需要将类实例化
Public static void main(String[] args) {
Person person=new Person(); //使用new关键字创建一个对象,也是类的具体实例,类实例化后会有自己的对象
}
class Person(){
String name;
int age;
}
public class Demo05 {
public static void main(String[] args) {
Student student=new Student();
student.age=19;
student.name="小红";
System.out.println(student.age);
}
}
class Student{
String name;
int age;
}
构造器/构造方法
类中的构造器也成为构造方法,是进行对象创建必须用的
1.构造器的名称必须和类的名称相同
2.没有返回类型也不能写void
作用:
实例化对象的初始值
重要!!!alt+insert可以自动生成构造器
1.无参构造
public class Demo05 {
public static void main(String[] args) {
Student student=new Student();//使用new关键字本质是在调用构造器
student.age=19;
System.out.println(student.name);
}
}
class Student{
String name;
int age;
//1.无参构造 :创建对象后,默认就有
public Student(){
//构造器进行实例化初始值
this.name="小红";
}
}
2.有参构造
public class Demo05 {
public static void main(String[] args) {
Student student=new Student("狂神");//使用new关键字本质是在调用构造器
//就是把Student类中所有属性都给了student这个对象
student.age=19;
System.out.println(student.name);
}
}
class Student{
String name;
int age;
public Student(){
}
//2.有参构造
public Student(String name){
//构造器进行实例化初始值,在使用时需要注意有参构造器也需要无参的定义,将无参写空
this.name=name;//左边name是上面这个类的对象的属性,右边name是构造器中的name值传递
}
//this. 代表当前类
}
总结
定义:1.和类名相同 2.没有返回类型,也不能写void
作用:1.初始化对象 2.new关键字的本质是调用构造器
注意:在使用有参构造器时,需要先定义无参构造器。无参构造在创建对象后默认就有