每天努力一点点
-Make a little progress every day
文章目录
前言
随着时代的发展编程语言也在进步,Java语言更是成为当今时代潮流,本文简述了阿杰对Java语言的初步认识,并记录阿杰初次进行Java入门学习的部分重要基础内容;
一、什么是面向对象、类
面向对像: 是用代码来描述客观世界事务的一种方式;
**类:**一类对象的统称,对象就是这一类具体化的一个实例;
面向对象设计
开发时:找对象,用对象,用对象,并维护对象之间的关系;
面向对象设计的好处
将复杂的事情变简单了,只需要面向一个对象就行;
二、类和类的实例化
基本语法格式
//创建一个类
class 类的名字{
filed;//成员属性
method;//成员方法
}
类名 对象名 = new 类名();
类在Java中属于引用类型,一个类可以产生无数对象;
- new关键字用于创建一个关键字实例;
- 使用 . 来访问对象中的属性和方法;
三、类的成员
类的成员可以包括:字段,方法,代码块,内部类和接口等;
3.1 字段/属性/成员变量
class Person{
public String namme //字段
public int age
}
- 使用 . 访问对象的字段;
- 访问包含读也包含写;
- 对于一个对象如果没有显示设置初始值,那么会被设置一个默认的初始值;
(引用类型都为null, 基本类型除了boolean都为0, boolean初始值为false) - null表是不引用任何对象;对null进行 . 就会引发空指针异常;
3.2 方法
普通方法:用于描述一个对象的行为;
构造方法:在实例化对象的时候会被自动调用的方法;
class Node{
public int val;
public Node next;
public Node (int val){//构造方法
this.val = val;}
}
3.3 static 关键字
-
修饰属性
同一个类不同实例共用一个静态属性; -
修饰方法
静态方法属于类而不属于对象;
可直接调用静态方法无需创建实例;
静态方法可以访问静态数据成员,并可以更改静态数据成员的值;
总结:
static 定义的变量是实例变量;
static方法不依赖于对象,对静态方法来说没有this ;
静态成员变量或成员方法在方法区,都要通过类名来直接调用;
静态方法内部不能调用非静态方法;
父子类中的静态方法总是被先执行,而且只执行一次;
四、封装
4.1 private实现封装
- 被public修饰的成员方法或成员变量可以直接被调用者使用;
- 被private修饰的成员变量或者成员方法。不能被类的调用者使用;
4.2 getter和setter方法
当用private来修饰字段就无法直接使用这个字段了,这时如果需要获取或者修改private就要使用getter/setter方法;
示例:
class Person{
private String name;//实例成员变量
private int age;
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void show(){
System.out.println("name:"+name+" "+"age:"+age);
}
}
public class text{
public static void main(String[] args){
//Person
Person person = new Person();
person.setName("yujie");
String name = person.getName();
System.out.println(name);
person.show();
}
}
set设置成员值;
get获成员值;
IDEA有快速生成setter , getter的方法:
alt+insert 或alt +f12 快速生成;
五、构造方法
5.1 基本语法
new的执行:
为对象分配内存空间,调用对象的构造方法;
语法规则:
- 方法名与类名相同;
- 构造方法没有返回值类型声明;
- 每一个类中至少存在一种构造方法,如果没有明确定义则系统自动生成一个无参构造;
5.2 this关键字
- this表示对当前对象的引用;
- 静态方法内部不能用this调用;
- this()调用构造函数必须放在第一行;
六、代码块
代码块的执行顺序:
- 静态代码块;
- 实例代码块;
- 构造带码块;
注意
静态代码块不管生成了多少个对象只会执行一次,且是最先执行的;
七、补充
- toString方法会在println时自动调用;
- IDEA快速生成Object的toString方法alt+f12;