目录
前言
类
成员变量
成员方法
方法重载Overload
可变参数
构造方法
对象的创建
this关键字
包
访问修饰符
番外
基本类型的封装
var局部变量
对象数组
Java是一种面向对象语言,面向对象编程主要体现在封装性、继承和多态。而本文中将详细讲类的封装
什么是类?
类是Java程序的基本要素,由关键字class定义。
class 类名{
类体的内容
}
注:类名首字母使用大写字母,类名最好任意识别。
类使用类体来描述所抽象的属性和行为(类声明之后的一对大括号以及它们之间的内容称为类体。类体的内容由变量(属性)和方法(行为)组成。【方法,其实也就是c语言里面的函数】
访问修饰符 属性类型 属性名;
eg:public int a;
1. 成员变量的类型可以是Java中的任何一种基本类型,包括基本类型和引用类型。
2. 成员变量的默认值:在声明成员变量时如果没有指定初始值,Java编译器会为其指定默认值。【boolean:false;byte、short、int和long变量:0;char:'\0';float和double:0.0;“引用型”变量(数组及对象):null】
3. 属性注意细节:
1)属性的定义语法同变量【示例:访问修饰符 属性类型 属性名;( 访问修饰符:控制属性的访问范围 ;四种访问修饰符:public,protected;默认;private;)】
2)属性的定义类型可以为任意类型,包含基本类型或引用类型
3)属性如果不赋值,有默认值,规则和数组一致。
访问修饰符 返回数据类型 方法名(形参列表){//方法体
语句;
return 返回值;
}
1. 方法的使用
2. 方法的调用:
3. 方法注意细节:
class Cat{
//成员变量
private String name;
//成员方法
public void Playing(){
System.out.println("Cat is playing");
}
}
public int sum(int n1,int n2){
return n1 + n2;
}
public int sum(int n1,int n2,int n3){
return n1 + n2 + n3;
}
public double sum(double n1,double n2){
return n1 + n2;
}
public int sum(int...nums){
int total = 0;
for (int i = 0; i < nums.length; i++) {
total += nums[i];
}
return total;
}
基本介绍
基本语法
[修饰符] 方法名 (形参列表){ 方法体;}
注意细节
1. 一个类可以定义多个不同的构造器(即构造器重载 );2. 构造器名和类名要相同 并且没有返回值; 3. 构造器是完成对象的初始化,表示创建对象; 4. 在创建对象时,系统自动调用该类的构造方法; 5. 如果类中没有构造器,系统会自动给类生成一个默认无参构造器(也叫默认构造器),使用javap指令反编译可以查看;6. 在类中定义了一个构造器,默认的构造器就会被覆盖,要使用默认无参构造器必须进行显式的定义【即:Person(){}】
class Person{
public Person(){
//无参构造器
}
public Person(int name){
//有参构造器
}
}
1.创建对象
1)先声明在创建 :Cat cat;//声明对象 cat cat=new Cat();//创建
2)直接创建 :Cat cat=new Cat();
Java内存结构:
栈:存放基本数据类型(局部变量)
堆:存放对象(Cat cat,数组等)
方法区:常量池【常量、字符串等】,类加载信息
Java创建对象的流程:
1)加载类信息(属性和方法信息,只会加载一次)
2)在堆中分配空间,进行默认初始化
3)把地址赋给所起的名字(eg:dog)
public static void main(String[] args) {
Dog dog = new Dog("Mike");
Dog dog1;
dog1 = new Dog("Jimmy");
dog.play();
//直接调用方法
new Dog("Tom").play();
}
基本介绍:this代表当前对象,可以用来访问本类中的属性、方法、构造器
注意细节:1. this用于区分当前类的属性和局部变量 ;2.访问成员方法的语法:this.方法名(参数列表) 3.访问构造器语法:this(参数列表);注意只能在构造器中使用 ;4. this不能在类定义的外部使用,只能在类定义的方法中使用
class Dog{
private int age;
public String name;
public Dog(String name){
this.name = name;
}
public Dog(String name,int age){
this(name);
this.age = age;
}
}
基本介绍:包是Java语言有效地管理类的一个机制。在不同Java源文件中可使用包名区分名字相同的类
包的作用: 1、区分相同名字的类 2、当类很多时,可以很好的管理类 3、控制访问范围
本质:创建不同的文件夹来保存类文件
基本语法:用package来声明包文件
命名规则:只能包含数字、字母、下划线、小圆点,但不能用数字开头,不能是关键字或保留字
导入包:import语句来导入包,可以在类中引入包中的类和接口
package 包名;
例如:package sun;//sun包
package sun.sunrise;//在sun包里面的sunrise包
使用细节:
1、package需要放在类的最上面,一个类中最多,只有一句package
2、import指令,位置放在package的下面,在类定义前面,可以有多句(没有顺序要求)
java提供了四种访问控制修饰符控制方法和属性(成员变量)的访问权限(范围)
访问级别 | 访问控制修饰符 | 同类 | 同包 | 子类 | 不同包 |
公开 | public | √ | √ | √ | √ |
受保护 | protected | √ | √ | √ | × |
默认(友好) | 没有修饰符 | √ | √ | × | × |
私有 | private | √ | × | × | × |
使用细节:
Java的基本数据类型包括boolean、byte、short、char、int、long、float和double。Java在java.lang包中提供了与基本数据类型相关的类Boolean、Byte、Short、Character、Integer、Long、Float和Double,实现了对基本数据类型的封装。
char c='A';
if(Character.isLowerCase(c)){
c=Character.toLowerCase(c);
}
System.out.println(c);
var可以声明局部变量(仅限于在方法体内使用var声明局部变量
var是保留类型名称,不是关键字。在JDK10开始,var也可用作变量或方法的名称。但是,var不能再用作类或接口的名称(如果维护的代码需要使用JDK10之后的环境,就需要修改类名或接口名是var的那部分代码
void f(double d){
var width = 108;
var height = d;
var date = new date();
width = 3.14;//非法,width的类型确定为int类型
var str;//非法,无法判断str类型(必须显式指定)
var what = null; //非法,无法判断类型
}
注意事项:
1. 在类的类体中,不可以用var声明成员变量(只能在方法体内)
2. 使用var声明局部变量时,必须显式地指定初始值(初始值不能为null)
3.方法的参数和方法的返回类型不可以用var来声明
概念:数组的元素的对象
Dog[] dogs=new Dog[10];
for(int i=0;i
总结:类是组成Java源文件的基本元素,一个源文件是若干个类组成的,类体由成员八零和方法组成。类的构造器可以初始化对象,导入包可以使用包内的类和接口,访问修饰符控制了方法和属性的访问范围。