第三天----Java基础---面向对象上

来源:互联网 发布:超能勇士知乎 编辑:程序博客网 时间:2024/06/10 07:53

Static
Static静态方法:不需要建立对象即可调用该方法。只能调用静态变量。
在静态方法中,只能直接调用同类中其他的静态成员(包括变量和方法),而不能直接访问类中的非静态成员。这是因为,非静态的成员,需要先创建类的实例对象后才能使用,而静态方法在使用前不用创建任何对象。
静态方法不能以任何方式引用this和super关键字。
main()方法是静态的,因此JVM在执行main()方法时不创建main方法所在类的对象,所以不能直接调用该类的非静态成员,不许建立一个该类的实例对象后才能通过这个对象实例去访问该类中的非静态成员。
Static静态变量:不需要建立对象即可调用该变量,在一个类中如果有static变量,不论建立多少个对象,就具有该变量,且唯一一个。
静态代码块
static{
}
类加载器第一次调用该类时执行static静态代码块.且仅有一次。
单态设计模式
设计模式就是在大量的实践中总结和理论化之后优选的代码结构、编程风格,以及解决问题的思考方式。
public class Test{
public static void main(String[] args){
Person p1 = Person.getPerson();  //建立一个Person对象
Person p2 = Person.getPerson();  //建立一个Person对象
System.out.println(p1 == p2);  //比较创建的两个对象是不是指向同一个Person对象
}  //因为Static在类中只执行一次。SO。。。
}
class Person{
private Person(){  //构造方法私有化,private,只有自己类内能访问
System.out.println("a object create");
}
private Person p = new Person();  //建立一个内部的Person对象
static public Person getPerson(){  //static方法,返回刚建立的Person对象
return p;
}
}
理解main方法的语法
public static void main(String[] args){
}
内部类 ---在类中直接定义的内部类
嵌套类可以直接访问嵌套它的类的成员,包括private成员,但是,嵌套类的成员却不能被嵌套它的类直接调用。如果用static修饰一个内部类的话,那这个内部类相当于外部定义的类,也无法直接访问嵌套它的类里面的变量。
为什么这么说呢。。。(傲~~~)  外部类(本文下方所说的外部类是指嵌套内部类的类)
个人观点:为什么内部类能直接访问外部类的成员,而外部类无法直接访问内部类的成员。
因为执行一个内部类的时候,类加载器会先加载外部类,然后在加载内部类,所以当内部类产生的时候,外部类已经存在了。内部类有一块指向外部类的变量,这样当内部类去查找一个变量的时候,如果内部类没有找到,就会去在外部类查找,也就是如果在内部类定义了一个i变量之后,内部类就无法去访问外部的i变量。
而如果当你创建一个外部类的时候,类加载只是去加载外部类,而没有加载内部类,所以没有外部类没办法访问到内部的局部变量。
内部类访问外部的变量
class Outer{
private int size;
class Inner{
private int size;
public void display(int size){
size ++;  //引用的是display传入的形参
this.size ++;  //引用的是Inter类的size
Outer.this.size ++;  //引用的是Outer类的size
}
}
}
外部类调用内部类
public class Test {
public static void main(String[] args) {
Outer o = new Outer();
Outer.Inner i = o.new Inner();
i.doStuff();
}
}
class Outer{
private int size = 10;
class Inner{
private int size;
public void doStuff(){
System.out.print(++size);
}
}
}
使用Java的文档注释
import java.io.*;
public class engineer {
public String Engineer_name;
public engineer(String name) {
}
public int repairing(int sum, int alltime) {
}
}
文档注释以“”标志结束,相应的信息和批注所对应的位置很重要! 类的说明应在类定义之前,方法的说明应在方法的定义之前。
批注参数来标记一些特殊的属性及其相应的说明 。
@author<作者姓名>
@version<版本信息>
@param<参数名称><参数说明>
@return<返回值说明>