类的变量:
实例变量:
用来存储某个类对象的状态值。修饰符为public或者private。使用范围是整个类,可以在类中的任意方法内被调用。实例变量是依据其对象存在的,运行程序创建对象的同时,创建了其实例变量,程序运行完成,对象消失,其实例变量也消失。
例如:
public class Person
{
public String name;
public char gender;
public double height;
.......
}
静态变量(类变量):
用修饰符static修饰的变量。静态变量是类的变量,不属于任何一个类的具体对象实例。它不保存在某个对象实例的内存空间中,而保存在类的内存空间的公共存储单元中。
例如: static String language="Chinese";
区别:
实例变量一般使用private/public作为修饰符。每个类的对象都具有一套属于自己的、在类中定义的实例变量。每个对象只能修改或者访问其自身俄实例变量,不会影响其他对象的实例变量。
静态变量使用static修饰符。每个类的所有对象共同拥有一套类的静态变量。类和其对象都可以修改或者访问静态变量。
最终变量:
使用修饰符final修饰的变量。其保存的数据在程序的整个执行过程中都不会改变。通常在final前面加上static,那么这个变量的实际含义就是常量。
例如:static final double pi = 3.1415926;
易失变量:
被volatile修饰符修饰。说明该变量可能同时被几个线程所控制和修改,即该变量不仅仅被当前程序所掌握,在运行过程中可能存在其它未知的程序操作来影响和改变该变量的值。
类的方法:
实例方法:
实例方法属于每个对象,只能通过类的对象调用。如果希望实例方法可以在类之外被访问,使用public;如果希望实例方法只在类内被访问,则使用private。
静态方法:
静态方法使用static修饰,是属于某个类的,它在内存空间中的内容将随类的声明而进行分配和装载,不被任何一个对象所单独拥有。静态方法不能操纵和处理属于某个对象的实例变量,而只能处理属于整个类的静态变量,亦即静态方法只能处理静态变量或者调用静态方法。静态方法不能访问实例变量,所以在静态方法中不能使用关键字this。
关键字this:
作用是当需要在类的实例方法中指向调用该实例的对象时。必须用this的情况:
1、局部变量与实例变量同名。(this最常见的应用是在类的构造方法和实例方法中解决局部变量与实例变量同名的问题)在参数名或者局部变量名与实例变量同名时,由于参数变量和局部变量的优先级高,则在方法体中参数名或者局部变量名将隐藏同名的实例变量。使用this可以将其区分开来。
2、在构造方法中调用其它构造方法。在构造方法的第一条语句使用关键字this调用同一个类中的另一个构造方法。
格式:this(参数列表); 注意:由修饰符static修饰的静态变量不能使用this调用。
public class Person { private String name; private char gender; private double height; public Person(String name, char gender) { this(name, gender, 1.65); } public Person(String name, char gender, double height) { this.name=name; this.gender=gender; this.height=height; } }
关键字super:
super指父类。应用与类的继承中。常用方法如下:
1、访问父类构造方法。在子类的构造方法中,使用super可以调用其父类中的构造方法。一般用于子类构造方法的参数多余父类构造方法的参数时使用,简化构造方法的语句体。必须是构造方法中的第一条语句。
格式:super(参数列表);
2、访问父类的变量和方法。当遇到子类中的实例变量或者实例方法与父类中的实例变量或者实例方法同名时,父类的会被子类隐藏。这个时候如果要使用父类中的某个实例变量或者实例方法,就需super关键字。
注意:super不能在static环境中使用。
类的继承:
继承后产生的类称为子类或者派生类,子类继承父类的状态和行为,同时也可以修改父类的状态或者重载父类的行为,并添加新的状态和行为。在Java中,每一个类只可以有一个父类,一个类可以有多个子类。子类不能继承父类中访问权限为private的实例变量和实例方法。
类的多态:
多态是指一个程序中同名的不同方法共存的情况。可以通过子类对父类方法的覆盖实现多态,也可以利用方法重载在同一个类中声明多个同名的不同方法。
覆盖是在声明子类的方法时,使用与其父类中相同的名称和参数。在执行程序时,将执行子类的方法,而覆盖掉父类的方法。
原文:https://blog.csdn.net/ast_224/article/details/88336585