第五章 类与对象的特征
构造方法的特征:方法名和类名一致,没有返回值:没有void:作用是创建对象,new对象的时候调用;作用:给成员变量赋值,如果没有显示赋值按照默认走。系统会给:数字为0,引用为null;Boolean为false
静态变量和实例变量的区别:(static修饰的变量叫静态变量,所有的静态变量或方法都属于类,使用static修饰的变量和方法 推荐使用类名直接调用 类名.变量名 只能调用静态的,通过new 对象的方式都可以调用 既可以调 非静态的 又可以调用静态的)
String name;
int age;
public work6(String name, int age) {
this.name = name;
this.age = age;
}
public static void main(String[] args) {
work6 p = new work6("qq",11);
p.name="aaaa";
p.age=11;
System.out.println(p.name+p.age);
}
1:首先在语法定义上区别:静态变量前面要加static,实例变量不用
2:在程序运行时:
实例变量输入对象的属性,必须创建了实例对象(如 new)才会被分配空间,才可以 使用实例变量,静态变量不属于某个实例对象,而是属于类,也叫类变量,只要程序加 载了类的字节码,不用创建任何实例对象就会被分配空间,就可以被使用
3:总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用 类名来引用。
注意:(static)静态变量的使用也是有局限性的,一个静态方法中不能调用类中的非静态 的方法和变量,static修饰的变量在类加载后在内存中只有一份内存空间,可以被一个 类的所有实例对象所共享,如:总库100张票,4个窗口卖火车票,卖的都是总库里的 票,无论是哪个窗口卖掉的票,总票都会减一。
卖票
static int ticket;
String name;
public void setTicket(){
ticket--;
System.out.println(ticket);
}
public static void main(String[] args) {
work6.ticket=100;
work6 p = new work6();
p.name="aa";
p.setTicket();
work6 p1 = new work6();
p1.name="qq";
p1.setTicket();
}
方法重载:方法名相同,参数列表不同—参数不同或者参数的数据类型不同或类型的顺 序不同
public int age;
public String stuName;
public static String teacherName;
static {
teacherName="aaa";
System.out.println("---------");
}
public static void test(){
// 静态方法中的变量必须是一个静态变量
System.out.println("老师的名字是"+teacherName);
//System.out.println("学生的名字是"+stuName);
}
public void testPutong(){
// 普通方法中的变量可以是一个静态变量
System.out.println("学生的名字是:"+stuName);
System.out.println("老师的名字是:"+teacherName);
}
public void testPutong2(){
testPutong();
// 普通方法 可以直接调用静态方法
test();
}
public static void test2(){
// 静态方法里面调用方法的时候 该方法必须是一个静态方法
test();
System.out.println("我是一个静态方法!!!!");
}
public work6(){
System.out.println("构造方法----");
}
public static void main(String[] args) {
work6.teacherName="test";
// com.yyl.pt.Student.test2();// 类名。方法名
work6 p = new work6();
p.stuName="kk";
p.testPutong2();
}
Final关键字:修饰变量的时候叫常量只能被赋值一次;
public final class FinalClass {
final double MY_PI = 3.1415926;
修饰方法的时候方法不能被重写
修饰类的时候类不能被继承
修饰对象的时候对象的引用地址不能发生改变,但是属性可以发生改变
访问权限修饰符:并不是每个修饰符都可以修饰类(指外部类),只有public和default可以。
所有修饰符都可以修饰数据成员,方法成员,构造方法。
为了代码安全起见,修饰符不要尽量使用权限大的,而是适用即可。比如,成员变量,如果没 有特殊需要,尽可能用private.
修饰符修饰的是”被访问”的权限
包:1)为什么需要包?
a:没有包类多的时候不好找,所以包的作用在于管理类。包在磁盘体现上就是文件夹。
b:不同包下的类可以重名(同一目录类不能重名)
c:可以通过包做一些限定
- 包的定义语句:
Package 包名 ;
包可以有层级,以.分割
com.aaa 在底层com文件夹 里边嵌套一个aaa文件夹
- 跨包请求的时候需要导入包:
import 包名.类名;导入指定类
import 包名.*; 导入本包下所有的类
系统在每一个类中默认导入了lang包——String int .....