java基础学习(四):类 - 了解什么是类,类中都有什么?
目录
- 类
- (一)定义类
- (二)访问权限
- (三)类的实例化
- (四)类中都有什么?
- 1. 属性(成员变量)
- 2. 方法
面向过程编程:只针对当前这一件事,可扩展性不好
面向对象编程:抽离出事务,后续调方法
面向对象:java类以及类的成员(属性、方法、构造方法、代码块、内部类)、面向对象的特征(封装、继承、多态、接口)、关键字(this、super、final、static)
类
(一)定义类
class 类名{}
在花括号中写该类的所有事务- 类中只有一个主类,可有多个其它类
- 主类的名字与文件名一致
public class Cat{//主类事务 } class Gog{ } class Person{ }
(二)访问权限
public
:仅限于使用当前这个类的主类当中
(三)类的实例化
- 就是创建对象,声明一个变量
public class Cat{//主类public static void main(String[] args) {Cat cat = new Cat();Cat cat1 = new Cat();} }
new Cat()
:就是类的实例化,在堆中开辟Cat
空间Cat()
:调用本类的构造方法,不管是否调用,都有构造方法public class Cat {public static void main(String[] args) {Cat cat = new Cat();}//Cat()的构造方法public Cat() {super();// TODO Auto-generated constructor stub} }
(四)类中都有什么?
类中有属性(成员变量)和方法。
1. 属性(成员变量)
(1)普通属性(对象属性):
- 不挂
static
,public int age;
; - 通过构造对象进行访问,对象.属性:
cat.age
(2)静态属性(类属性):
- 挂
static
,public static int weight;
- 两种访问方式:
- 可直接通过类名访问:类.属性
Cat.weight
- 通过构造对象进行访问,对象.属性
cat.weight
- 可直接通过类名访问:类.属性
public class Cat {//属性(成员变量)//普通属性(对象属性)public int age;//静态属性(类属性)public static int weight;
}
public class Test {public static void main(String[] args) {System.out.println(Cat.weight);Cat cat = new Cat();System.out.println(cat.age);System.out.println(cat.weight);}
}
2. 方法
(1)普通方法
- 对象方法(非静态方法):
- 不用
static
修饰 - 调用方法:创建对象调方法,对象名.方法名(参数),对象方法可调用类方法
Cat cat = new Cat(); cat.run(3, 4);
- 对象方法可以调对象方法和类方法
- 不用
- 类方法(静态方法):
- 用
static
修饰 - 两种调用方法:
- 直接调方法,类名.方法名(参数)
Cat.jump(2, 5);
- 创建对象调方法,对象名.方法名(参数)
Cat cat = new Cat(); cat.jump(5, 6);
- 直接调方法,类名.方法名(参数)
- 类方法可调用类方法
- 类方法调用对象方法需要先创建对象
- 用
public class Cat {//普通方法//对象方法(非静态方法)public void run(int a, int b) {System.out.println("run方法执行啦");//对象方法调对象方法和类方法eat();jump(8, 9);}public void eat() {System.out.println("eat方法执行啦");}//类方法(静态方法)public static void jump(int a, int b) {System.out.println("jump方法执行啦");//类方法可调用类方法fly();//类方法调用对象方法Cat cat = new Cat();cat.eat();}public static void fly() {System.out.println("fly方法执行啦");}
}
public class Test {public static void main(String[] args) {//方法调用//类方法直接调用Cat.jump(2, 5);//创建对象,用对象调方法Cat cat = new Cat();cat.run(3, 4);cat.jump(5, 6);}
}
- 方法签名:由方法名和参数列表组成。
方法名相同,参数列表不同,方法签名就不同,那方法就是不同的。
参数列表包括:
1. 参数数量
2. 参数类型
3. 参数顺序
注意:参数名不同不作为执行标准。public class Cat {public static void fly() {System.out.println("fly方法执行啦");}public static void fly(int a) {System.out.println("fly方法执行啦");} }
- 函数重载 :在同一个类中,方法名相同,参数列表不同,与返回值无关
减少功能相同逻辑的方法命名,减少同系列的命名。
(2)构造方法
- 构造方法的方法名要与文件名一致
- 一个类中至少有一个无参构造方法
- 以后将无参构造方法写上,后续框架会使用无参构造方法
- 没有返回值
- 创建对象,开辟空间
public class Cat {//构造方法public Cat() {}}```
- 代码块
{}
- 普通代码块 写在方法内部
- 构造代码块 写在类中
- 静态代码块 被static修饰
- 作用:可以完成一些初始化的操作
public class Test {public static void main(String[] args) {{System.out.println("普通代码块");}}{System.out.println("构造代码块");}static {System.out.println("静态代码块");} }
- 对象的初始化顺序(执行顺序):
- 属性 = 代码块 > 构造方法
- 静态属性 = 静态代码块(谁先执行看书写的顺序)> 属性 = 构造代码块(谁先执行看书写的顺序)> 构造方法
注意:静态只执行一次,只在第一次加载时执行,所有静态只由第一个对象触发 - 父类 > 子类
- 父类静态 > 子类静态 > 父类非静态 > 父类构造方法 > 子类非静态 > 子类构造方法