java面向对象(中)
二、类的封装和继承
1.属性私有化,使用getter和setter方法获取和设置属性。
2.继承使用关键字extends,派生类集成了父类除private标记外的所有属性和方法。示例代码如下:
class Father{
protected int age;
protectedString name;
public Father(String name,int age){
this.age=age;
this.name=name;
}
public void Print(){
System.out.println("Father:"+this.name+"--"+this.age);
}
}
class Son extends Father{
public Son(String name,int age){
super(name,age);
super.Print();
}
}
public class ExtendsDemo {
public static void main(String[] args) {
new Son("guoxu",15);
}
}
3.在java中子类中使用super属性调用父类方法,如果是构造方法,则直接使用super.()。在php中则使用parent::fun()来调用父类方法。在python中则有点不同,可以说是比较奇特。
调用父类的构造方法:父类的名称.__init__(self),调用父类的普通方法,super(父类名称,self ) .fun(args)。
4. java中不允许多重继承
5. 父类private声明的属性和方法不会被子类继承。
6. 子类的实例化一定会调用父类的构造方法,所以如果父类构造方法被申明为private,将无法被子类实例化,这样将无法被子类继承。成为一个单例类。
7. 方法的覆写和重载的区别。覆写权限不能变小。重载,返回值不一样。
8. 使用abstract来声明抽象类,抽象类至少应该包括一个抽象方法,也可以包含普通方法。抽象类也可以有构造方法。
抽象类,可以由子类来进行实例化。
AbstractClass A=new AbstractSonClass();
9. interface可以定义一个接口。接口是一种特殊的类,由抽象方法和全局常量组成,由其继承接口的类实现。可以省略权限类型,直接写返回参数类型和方法名称及参数。implements关键字来实现继承接口。示例代码如下:
interface USB{
void start();
void stop();
}
class Computer{
public static void plug(USB u){
u.start();
u.stop();
}
}
class Flash implements USB{
public void start(){
System.out.println("u盘启动");
}
public void stop(){
System.out.println("u盘停止");
}
}
public class InterFaceDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
Computer.plug(new Flash());
}
}
可以继承多个接口