javaSE系列之类与方法
💗 💗 博客:小怡同学
💗 💗 个人简介:编程小萌新
💗 💗 如果博客对大家有用的话,请点赞关注再收藏 🌞
什么是类
对事物简单的描述,该过程对对象(实体)进行抽象(对一个复杂事物的重新认知),类是用来对一个实体(对象)来进行描述的。 列如洗衣机作为一个类
其中成员变量就可用 :产品品牌,型号,产品重量…来描述
成员方法就可用:洗衣,烘干,定时…
加粗样式//在同一个类(父类与子类算同一类)中可以直接访问 不需要引用
类的定义
class 类名()
{
访问权限 数据类型 成员变量;
访问权限 返回值 成员方法(形参);
}
public class Student{
public String name ;
public int age;
public int grade;
public void study(){
System.out.println("学习");
}
}//类名采用大驼峰模式
书写事项
一个文件最好定义一个类
和文件名相同的类必须用public修饰
main()方法所在的类一般使用public修饰
什么是实例化
1.用类类型创建对象的过程,称为类的实例化。 采用new类名,配合类名来实例化
2.使用.来访问对象的属性与方法
3.一个类可以多次实例化
Student student = new Student ();//实例化
//public class Student {
// public String name ;
// public int age;
// public int grade;
// public void study(){
// System.out.println("学习");
// }
//}
this引用
this可以当成当前对象的引用
//当形参名与成员变量相同时
public class Student {
public String name ;
public int age;
public int grade;
public Student(int age){
this.age = age;
}
public void setName(String name){
this.name = name;
}
}
this的注意事项
this只能在成员方法中使用
在成员方法中,this只能引用当前对象,不能引用其它方法//我的理解是 new ? ()这个就是当前对象
对象的初始化
当局部变量没有初始化时默认为初始值为0 ,引用类型为null
初始化一般有三种方法
1.通过成员方法
2.构造方法
3.通过引用.成员来初始化
4.就地初始化
5.通过实例代码块初始化
1.通过成员方法
2.通过引用.成员来初始化
4.就地初始化
构造方法
定义:构造方法(也称为构造器)是一个特殊的成员方法,名字必须与类名相同,在创建对象
时,由编译器自动调用,并且在整个对象的生命周期内只调用一次。 作用:就是给对象成员进行初始化,并不负责给对象开辟空间 特点:
1.名字必须和类名相同
2. 没有返回值类型
3. 只调用一次
4. 构造方法可以重载但不可以重写//当重载时,看实例化时调用哪个方法
5.当没有写构造方法时,编译器会自动生成一份默认的方法//一旦用户定义,编译器不在生成
6.可以在无参构造方法,可以通过this调用其他方法构造方法//this()必须是构造方法中第一条语句
构造方式
public 类名(形参)
//this(…)相当于 public Student(String name, int age, int grade)
封装的概念
面向对象程序三大特性:封装、继承、多态 本章先讲封装:
将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互
访问限定符
被public修饰的成员和方法,不管是不同包或者是不同类都可以使用
被protected修饰的类,可以在不同类,或者不同包的子类访问
被default修饰的类,可以在同一包中使用
被private修饰的类,可以在同一包中同一类使用//如若没有访问限定符修饰,为default类型
//一般情况下成员变量设置为private,
//成员方法设为public
封装扩展之包
为了更好的管理类,把多个类收集在一起成为一组,称为软件包。
一般用 import 包.类名 import static 可以导入包的静态方法和名字
static成员
在Java中,被static修饰的成员,称之为静态方法,也称之为类成员,是所有对象共享的
static的特性
1.一般通过类名来访问,也可以用对象访问(但一般不建议)
2.不属于某个具体对象,是类的属性,是所有对象共享的,不存储在某个对象的空间
3. 类变量存储在方法区当中
4. 生命周期伴随类的一生(即:随类的加载而创建,随类的卸载而销毁)
5.不能在静态方法中访问任何非静态成员变量,或者调用任何非静态成员方法
static的初始化
1.就地初始化
2.静态代码块初始化
代码块
代码块:使用{}定义的一段代码成为代码块 类型: 1.普通代码块
2. 构造块
3. 静态块
4. 同步代码块//这章不讲
1.普通代码块
2.构造代码块:一般用于初始化实例
3.静态代码块//请看静态代码块
注意事项
1.静态代码块不管生成多少个对象,其只会执行一次
2.静态成员变量是类的属性,因此是在JVM加载类时开辟空间并初始化的,实例代码块只有在创建对象时才会执行。
3.如果一个类中包含多个静态代码块,在编译代码时,编译器会按照定义的先后次序依次执行(合并)。
内部类
可以将一个类定义在另一个类或者一个方法的内部,前者称为内部类,后者称为外部类。内部类也是封装的一种体现。
列如
内部类分为:实例内部类,静态内部类,局部内部类
1.实例内部类
从两个方面入手
在内部类访问其他成员
访问内部类成员
1.在实例内部类可以直接访问外部类(任何成员都可以)
//外部类与内部类在同一个类里可以直接访问
内部类相当于外部类的成员,所以也受public , private 等访问限定符的限制
- 在实例内部类方法中访问同名的成员时,优先访问自己的,如果要访问外部类同名的成员,必须:外部类名称.this.同名成员 来访问
- 实例内部类对象必须在先有外部类对象前提下才能创建
- 外部类中,不能直接访问实例内部类中的成员,如果要访问必须先要创建内部类的对象。
2.静态变量
//静态内部类中什么都可以定义
- 在静态内部类中只能访问外部类中的静态成员
//如果执意访问 可以在内部类实例化外部类
- 创建静态内部类对象时,不需要先创建外部类对象