Java面向对象 01 - 07
Java面向对象01 - 什么是面向对象
面向对象的本质:以类的的方式组织代码,以对象的组织(封装)数据
- 抽象
- 三大特征:
- 封装
- 继承
- 多态
Java面向对象02 - 回顾方法的定义
Java面向对象03 - 回顾方法的调用
- 调用一
package Demo01;
public class Student {
//非静态方法
public void say(){
System.out.println("学生说话了");
}
public static void eat(){
System.out.println("学生吃东西了");
}
}
package Demo01;
public class Demo01 {
//main方法
public static void main(String[] args) {
//1.非静态方法实例化
//用new来实例化类
//对象类型 对象名 = 对象值
Student student = new Student();
student.say();
//2.非静态方法实例化
new Student().say();
//3.静态方法实例化
Student.eat();
}
}
学生说话了
学生说话了
学生吃东西了
- 调用二
- 两个static的函数互相调用
- 没有问题
package Demo01;
public class Demo02 {
public static void a(){
b();
}
public static void b(){
}
}
- 调用三
- 两个非static的函数互相调用
- 没有问题
package Demo01;
public class Demo02 {
public void a(){
b();
}
public void b(){
}
}
- 调用四
- 在一个static函数下,调用一个非static函数
- 报错
package Demo01;
public class Demo02 {
public static void a(){
b();
}
public void b(){
}
}
- 调用五
- 在一个非static函数下,调用一个static函数
- 没有问题
package Demo01;
public class Demo02 {
public void a(){
b();
}
public static void b(){
}
}
原理:static方法在类加载时就存在了,但是非static方法在类被实例化的时候才存在,所以static方法不会提前知道非static方法的存在,但是非static方法一定能知道static方法的存在。
- 修改成功
package Demo01;
public class Demo04 {
public static void main(String[] args) {
Person person = new Person();
System.out.println(person.name);
Demo04.change(person);
System.out.println(person.name);
}
public static void change(Person person){
person.name = "Liang Junyi";
}
}
class Person{
String name; // null
}
null
Liang Junyi
- 修改失败
package Demo01;
public class Demo05 {
public static void main(String[] args) {
int a = 1;
System.out.println(a);
Demo05.change(a);
System.out.println(a);
}
public static void change(int a){
a = 10;
}
}
1
1
Java面向对象04 - 类与对象的创建
package Demo02;
public class Application {
public static void main(String[] args) {
//类,抽象的,实例化
//类实例化后会返回一个自己的对象
//student对象是一个Student类的具体实例
Student xiaoming = new Student();
Student xiaohong = new Student();
xiaoming.name = "小明";
xiaoming.age = 3;
System.out.println(xiaoming.name);
System.out.println(xiaoming.age);
xiaohong.name = "小红";
xiaohong.age = 5;
System.out.println(xiaohong.name);
System.out.println(xiaohong.age);
}
}
小明
3
小红
5
Java面向对象05 - 构造器详解
- 使用new关键字创建对象
- 使用new关键字创建的时候,除了分配内存空间之外,还会给创建好的对象进行默认的初始化以及对类中的构造器的调用
- 类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的。并且构造器有以下两个特点:
- 必须保持和类的名字相同
- 必须没有返回类型,也不能写void
构造器要求
与类名相同的public函数
分为有参数与无参数构造
构造器特点
- 不创建的时候系统会默认创建一个无参数构造器
- 反之手动创建了构造器后,不会再自动生成无参构造器
- 使用new关键字,本质是在调用构造器
- 构造器被用来初始化值
- 通常有参构造与无参构造都会写,而且写不止一个有参构造,也就是重载
alt + insert
快捷键,可用来生成构造器
package Demo03;
public class Person {
String name;
int age;
public Person(){
}
public Person(String name){
this.name = name;
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
package Demo03;
public class Application {
public static void main(String[] args) {
Person person = new Person("zhaoxiaoyi",23);
System.out.println(person.name);
}
}