面向对象编程
什么是面向对象面向对象编程 (Object-Oriented Programming , OOP)面向对象编程的本质就是:以类的方式组织代码,以
面向对象编程
什么是面向对象
-
面向对象编程 (Object-Oriented Programming , OOP)
-
面向对象编程的本质就是:以类的方式组织代码,以对象的形式封装数据
-
抽象
-
三大特性:
- 封装
- 继承
- 多态
值传递和引用传递
Java中都是采用值传递
-
值传递
package oop; //值传递 public class Demo01 { public static void main(String[] args) { int a = 1; System.out.println(a); //1 Demo01.change(a); System.out.println(a); //1 } //返回值为空 public static void change(int a){ a = 10; } }
-
引用传递
package oop; public class Demo02 { public static void main(String[] args) { Person person = new Person(); System.out.println(person.name);//null Demo02.change(person); System.out.println(person.name);//小明 } public static void change(Person person){ person.name = "小明"; } } //定义一个Person类,有一个属性:name class Person{ String name;//null }
构造器
构造器:
- 和类名相同
- 没有返回值
作用:
- new 本质是在调用构造函数
- 初始化对象的值
注意点:
- 定义有参构造之后,如果想使用无参构造,显示的定义一个无参构造
- Alt + Insert
实例
package oop;
public class Student {
String name;
int age;
//1.使用new关键字,本质是在调用构造器
//2.用来初始化值
public Student() {
}
//有参构造:一旦定义了有参构造,无参就必须显式定义
public Student(String name, int age) {
this.name = name;
this.age = age;
}
}
package oop;
public class Application {
public static void main(String[] args) {
//new 实例化了一个对象
Student student = new Student("小明", 20);
System.out.println(student.name);
System.out.println(student.age);
}
}
super注意点:
- super 调用父类的构造方法,必须在构造方法的第一个!
- super 必须只能出现在子类的方法或者构造方法中!
- super 和 this 不能同时调用构造方法!
和 this区别:
代表的对象不同:
- this :本身调用者这个对象
- super : 代表父类对象的应用
前提:
- this :没有继承也可以使用
- super : 只能在继承条件下才能使用
构造方法:
- this(): 本类的构造
- super(): 父类的构造
重写:需要有继承关系,子类重写父类的方法!
- 方法名必须相同
- 参数列表必须相同
- 修饰符:范围可以扩大,但不能缩小; Public > Protected > Default > Private
- 抛出的异常:范围可以缩小,但不能扩大;
注意:重写时子类的方法和父类的必须一致;方法体不同!
多态的注意事项:
- 多态是方法的多态,属性没有多态
- 父类和子类有联系,类型转换异常
- 存在条件:继承关系,方法需要重写,父类引用指向子类对象!