目录
一、类
1、成员:属性(成员变量)、方法
2、类的创建:
package day11;
修饰符 class 类名 {
修饰符 属性类型 属性名称; //定义属性;
修饰符 返回值 方法名() { //定义方法
}
}
注意:
①文件名必须与类名相同,且首字母必须大写。
②一个Java文件中只允许存在一个public类,但可存在多个非public类。
③修饰符包含:private、default(默认不写)、protect、public
④上表中,private的作用范围仅在类内部,表示仅在本类内部可对其进行修改,其它类不能,其余修饰符同理。
案例:创建学生信息类,包含学生学号、姓名、电话的属性,还包含输出学生信息的方法。
package day11; public class Stuinfo { public int id; public String name; public int tel; public void showInfo() { System.out.println("学生信息如下:"); System.out.println("学号:"+id+" "+"姓名:"+name+" "+"电话:"+tel); } }
二、对象
1、创建对象:
案例:创建学生信息类的对象,为属性赋值并调用该类内部的方法。
package day11; public class Test1 { public static void main(String[] args) {//main方法中创建对象 Stuinfo stu=new Stuinfo();//new StuInfo对象 stu.id=1;//赋值 stu.name="张三"; stu.tel=123456; stu.showInfo();//调用类中方法 } }
运行结果:
注意:要在main方法中创建对象。
2、构造方法(构造器)
①含义:属于类中特殊方法,主要用于初始化类中属性的值。
②语法:
public 类名{
赋初值语句
...
}
案例1:为Stuinfo类创建含有三个参数的构造方法,并为类中属性赋初值。
package day11; public class Stuinfo { public int id; public String name; public int tel; public Stuinfo(int ids,String names,int tels){ //含有三个参数的构造器 id=ids; name=names; tel=tels; } public void showInfo() { System.out.println("学生信息如下:"); System.out.println("学号:"+id+" "+"姓名:"+name+" "+"电话:"+tel); } }
注意:对一个只包含有变量构造器的类创建对象时,若使用Stuinfo stu = new Stuinfo();会报错(如下图)。
正确创建对象的方法:
案例2:可变个数的方法形参
package day11; public class Stuinfo { public void ShowInfo(String ...str) { //也可使用String str[]代替String ...str System.out.println("输入的参数为:"); for(int i=0;i<str.length;i++) { System.out.print(str[i]+" "); } } }
注意:当参数即包含确定的类型又包含不确定个数的参数时,要把确定的参数放在String ...str的前面,中间使用逗号隔开。
package day11; public class Stuinfo { public void ShowInfo(int id,String ...str) { System.out.println("输入的参数为:"); for(int i=0;i<str.length;i++) { System.out.print(str[i]+" "); } } }
3、类变量、类方法
①含义:使用static关键字修饰的属性、方法称为类变量、类方法。
②类变量:类变量被赋值后其值被共享。
案例:证明类变量被赋值后其值被共享。
package day11; public class Stuinfo { //Stuinfo类 public static int id; public Stuinfo(int ids) { //构造方法 id=ids; } public static void getId() { System.out.println(id); } } class Test1 { public static void main(String[] args) { Stuinfo stu1=new Stuinfo(10); //创建stu1对象赋初值为10并输出其值 stu1.getId(); Stuinfo stu2=new Stuinfo(11);//创建stu2对象赋初值为11并输出stu1的值 stu1.getId(); } } //比较两次stu1中的id值是否发生变化,若发生改变则可证上述描述无误。
运行结果:
③类方法:使用static关键字修饰后可使用匿名对象调用其方法。
案例:证明类方法可用匿名对象直接调用。
package day11;
public class Stuinfo {
public static void print() {
System.out.println("hello world");
}
}
class Test1 {
public static void main(String[] args) {
Stuinfo.print(); //注意:不属于匿名对象
}
}
运行结果:
若不用static修饰,直接使用匿名对象调用:
④匿名对象:
package day11;
public class Stuinfo {
public static void print() {
System.out.println("hello world");
}
}
class Test1 {
public static void main(String[] args) {
new Stuinfo().print();
}
}
4、静态、非静态代码块
①作用:初始化
②非静态代码块:
- 可调用静态、非静态属性或对象。
- 创建对象都会执行一次代码块。
- 同为代码块按先后顺序执行。
③静态代码块:
- 不可以调用非静态属性、方法。
- 静态代码块的执行要早于非静态代码块。
- 静态代码块仅在首次创建对象时执行,以后不再执行。
④执行顺序:代码块(先静态后非静态、先上后下顺序)->显示初始化->构造方法(构造器)
三、封装对象(JavaBean )
1、含义:使代码使用更安全,便于操作。
2、封装方法:
①属性的修饰变为private(保证外部不能直接修改属性的值)。
②添加set、get方法,步骤如下图:
鼠标右键->按下图操作
勾选属性
点击创建
创建完成,如下图所示
四、this、final关键字
1、this关键字作用:
①当形参与变量重名时使用this区分。
②在方法中使用this提高代码的可读性。
案例:构造函数中使用this为属性初始化。
package day11;
public class Stuinfo {
private int num;
private String name;
public Stuinfo(int num,String name) { //尽管形参名与属性名相同也可以区分
this.num=num;
this.name=name;
}
}
案例2:在构造方法中使用this。
class Person{
private String name ;
private int age ;
public Person(){
System.out.println("新对象实例化") ;
}
public Person(String name){
this(); // 调用本类中的无参构造方法
this.name = name ;
}
public Person(String name,int age){
this(name) ; // 调用有一个参数的构造方法
this.age = age;
}
public String getInfo(){
return "姓名:" + name + ",年龄:" + age ;
}
}
注意:
①static修饰的方法(类方法)中不可使用this关键字。
②this调用本类中的其它构造器,至少保证有一个不适用this()。
2、final关键字:
①标记类:该类不能再被继承。
②标记方法:该方法不能被重写。
③标记变量:该变量变为常量(常量要赋初值,并建议全部字符大写)。
不足请留言!