一、面向对象
面向对象是一种编程方式、是一种思维方式,不是一种编程语言。
如何学习?
语法、思维方式、设计原则、设计模式
什么是面向对象的思维方法?
1)首先确定谁来做,其次确定怎么做;
2)首先考虑整体,其次考虑局部;
3)首先考虑抽象,其次考虑具体。
二、定义类的方法
class 类名{
属性; //属性也叫成员变量,主要用于描述状态
方法; //方法也叫成员函数,主要用于描述类的行为
}
生成对象的方法
格式:类名 对象名 = new 类名(); //引用数据类型
例如:Dog dog = new Dog();
Dog dog在栈内存中创建一个Dog的引用,new Dog()在堆内存中开辟一块空间,创建一个Dog的对象放到该空间中,=将创建的Dog对象赋值给这个引用。
创建类.png
生成多个对象
生成多个对象.png
匿名对象
可以不定义对象的引用名称,而直接调用这个对象的方法。这样的对象叫做匿名对象。如new Dog().jump();
三、函数的重载
1.处于同一个类中
2.函数名相同
3.参数列表不同
四、构造函数
1.构造函数没有返回值类型的定义
2.构造函数名称必须与类名相同
3.使用 new 构造函数 来调用
4.如果一个类中没有构造函数,编译器会为类加一个参数为空且方法体为空的构造函数;如果一个类中已经有了构造函数,那么编译器就不会再添加无参数的构造函数。
五、使用this调用成员变量和成员函数
六、使用this调用构造函数
七、静态成员变量、静态函数
1、静态成员变量定义
定义:static int i;
调用:可以直接用类名调用。
2、静态函数
定义:static void fun () {}
静态成员变量.png
调用:可以直接使用类名调用,在静态函数中,不可以使用非静态成员变量(不能使用this)。
3、静态代码块
定义:
static {
System.out.println("静态代码块");
}
调用:静待代码块无需调用,在将代码装载到虚拟机时执行。
4、e.g.建议类名与源文件名相同
class Person {
static int i;
String name;
static{
System.out.println("静态代码块");
}
static void fun () {
System.out.println("我是静态函数");
}
static void talk() {
//会编译报错,无法从静态上下文中取出非静态变量
System.out.println("my name is "+name);
}
}
class Test {
public static void main (String args []) {
//可以使用类名来调用
Person.i = 10;
}
Person p1 = new Person();
Person p2 = new Person();
Person.i = 10;
System.out.println("p1的i的值为:"+p1.i); //10
System.out.println("p2的i的值为:"+p2.i); //10
p1.i = 20;
System.out.println("p1的i的值为:"+p1.i); //20
System.out.println("p2的i的值为:"+p2.i); //20
Person.fun();