java三大特性如题。
封装:封装就是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。
封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过 外部接口,一特定的访问权限来使用类的成员。
继承:子类对父类的继承,若子类与父类在同一包中。子类继承了父类中所有不是private的成员方法(除构造方法)及不是private的成员变量。
注:子类不继承父类的构造方法。
成员变量:包括实例变量与类变量(用static修饰,亦称为静态变量))。
成员方法:包括实例方法与类方法(即静态方法)。
重写:当子类对继承来的方法进行新方法体的构建的时候,这个过程成为重写。即发生在子类与父类之 间。 属于面向对象的特性。方法名及参数都不能修改。
super: 当父类中的方法或变量被重写后,父类中的该方法或变量将被隐藏。如果想要在子类中使用被子类隐藏的成员变量或方法就可以使用关键字super。由于子类不继承父类的构造方法,故想使用父类的构造方法,也要用到super(在子类构造方法第一句中写入super())。
重载:同一个方法名,通过不同的参数数量或参数类型设置,构建不同的方法体的过程。发生在同一类中,不是面向对象过程。
注:构造函数可以重载,但不能重写(在子类中只能用super()获取,否则用不到哦~)。
多态:父类的某个方法被其子类重写时,可以各自产生自己的功能行为。
子类使用父类的方法:如果该方法已被重写(隐藏),那么要用super.f()。否则只要不是private方法不用super,可直接调用。那private方法如何调用呢:
创建一个下转型对象:(此对象为父类的一个对像,可使用父类的所有方法)
子类 hehe;
hehe=new(子类)父类();//注意括号,里面写子类,这是强制转型。
hehe.f();
父类调用子类的方法:创建一个上转型对象:
父类 haha;
haha=new 子类();
haha.f();
haha=new 子类2();
haha.f();
即为调用了两个子类分别重写的方法。
对上转型对象的说明:
class Human{
public void drink(){System.out.println("Human");}
}
class YongMan extends Human{
public void drink(){System.out.println("YongMan");}}
}
public class Test{
public static void main(String arge[]){
Human e2=new YongMan();
e2.drink();
}
}
以上面这个程序为例子
Human e2=new YongMan();
这句其实是指父类对象e2是子类YongMan对象的上转型对象
上转型对象不能操作子类新增的成员变量(失掉了这部分属性);不能使用子类新增的方法(失掉了一些功能)。
上转型对象可以操作子类继承或者隐藏的成员变量,也可以使用子类继承的或者重写的方法。上转型对象操作子类继承或重写的方法,其作用等价于子类对象去调用这些方法。因此,如果子类重写了父类的某个方法,则当对象的上转型对象调用这个方法时一定是调用了这个重写的方法
上面的YongMan 类中的drink()方法 重写了父类的方法
所以最后的输出结果是YongMan
类:是对象的模板,只是定义了一类东西,而对其中的变量和方法不能具体操作(除静态的),即只能操作类变量和类方法,而不能操作实例变量与实例方法。当new 出一个对象后,有了实例,分配了空间,就可以操作类中定义的所有变量和方法了。
对象:对类的实例化。当声明并新建一个对象时,系统会做两件事:
如:renwu zhubajie;
zhubajie=new renwu();
一、为类中各个变量height、head、ear、weight等分配内存,指定初始值。并执行构造方法renwu()。
二、给出一个信息,说明这些分配好内存的变量是属于对象zhubajie的,及它们将由zhubajie来管理。此处zhubajie=new renwu()中的zhubajie充当了引用的角色。由它就可以操作这些变量及有关方法了。