面向对象2
this关键字
-
在编程时,为了区分成员变量和局部变量,在编码时可以使用this关键字进行指示(成员变量前+this;
局部变量前不+this)。
-
使用this调用的是成员变量或成员方法
-
this在实际运行时,表示当前正在调用此方法的对象
-
this的使用实例:
public student{//不加this
String name;
int age;
String gender;
public student(String name,int age,String gender){
name=name;
age=age;
gender=gender;
}
}
public class StudentTst {
public static void main(String[] args) {
Student student=new Student("zhangsan",100,"man");
System.out.println(student.name);
System.out.println(student.age);
System.out.println(student.gender);
}
}
结果:
public student{//加this
String name;
int age;
String gender;
public student(String name,int age,String gender){
this.name=name;
this.age=age;
this.gender=gender;
}
}
public class StudentTst {
public static void main(String[] args) {
Student student=new Student("zhangsan",100,"man");
System.out.println(student.name);
System.out.println(student.age);
System.out.println(student.gender);
}
}
结果:
public class Student {
String name;
int age;
String gender;
public Student(){
this("zhangsan",100,"man");
}
public Student(String name,int age,String gender){
this.name=name;
this.age=age;
this.gender=gender;
}
}
public class StudentTst {
public static void main(String[] args) {
Student student=new Student();//此处Student里不需再传参
System.out.println(student.name);
System.out.println(student.age);
System.out.println(student.gender);
}
}
运行结果:
static关键字
-
静态。可以用来修饰类的成员变量、成员方法、代码块、内部类。
-
特点:
(1)随着类的加载而加载;
(2)优先于对象存在;
(3)静态的方法的方法中不能使用非静态的成员变量,非静态的方法中可以使用静态变量;
(4)修饰的成员,被所有对象所共享;
(5)可不创建对象,直接使用类名调用;
(6)静态变量在内存中与类一样只有一份(即内存中只存储一份,可以被共享、访问、修改。属于类,在内存中之加载一次);
(7)当方法中不需要使用非静态变量时,可以将方法设计为静态方法,不需要使用对象,直接通过类名访问;
public class Student {
String name;
int age;
String gender;
static String school="guangmingjiao";
//static修饰的量就是静态变量
//当所以类的对象某个属性值相同时,该值可以用静态变量将其定义
}
public class StudentTst {
public static void main(String[] args) {
System.out.println(Student.school);//可以不创建、使用对象,直接调用
}
}
笔者思考:
static(静态变量)所定义的变量优先于对象而存在。所有对象公用一个静态变量,其中任意一个static变量改变,其余对象内的静态变量也随之改变。类中的static可以不用创建对象,直接调用。
代码块
定义在类中,类似于一个没有名字的方法。
种类:
实例代码块
创建对象时自动调用
{
}
静态代码块
类加载时自动调用:
通过类名访问静态成员时,类会加载;
在一个类中使用main方法时,也会加载类;
对象被创建时类也会被加载;
类只被加载一次。
static{
}
- 如果有多个实例代码块或多个静态代码块会按照先后顺序一 一执行。
包
-
类的命名空间(可以理解为文件夹);
-
是类名的组成部分;
-
类名(全类名)=包名(地址)+类名简称;
-
一个类属于不同的包可以避免同名类的问题;
-
不能一次导入两个名词相同,不同包的类;
-
包名单词全部小写;
命名规范:
在包名中,可以使用.号来区分包的级别;包名一般情况下是小写
第一级 指该项目的类型,如com,org,gov等,
第二级 指项目所开发或者运行的公司名称,如:oracle,sun,huawei等
第三级 指项目的名称,如:bcms,oa,erp,cms等
第四级 指项目模块的名称,如:bean,action,exception等
- 导入外部包时需要使用关键字“import”
命名规范:
在包名中,可以使用.号来区分包的级别;包名一般情况下是小写
第一级 指该项目的类型,如com,org,gov等,
第二级 指项目所开发或者运行的公司名称,如:oracle,sun,huawei等
第三级 指项目的名称,如:bcms,oa,erp,cms等
第四级 指项目模块的名称,如:bean,action,exception等
- 导入外部包时需要使用关键字“import”