面向对象(4)

如果一个类没有用extends显性的表示继承一个类,那么他就继承Object类,

 

 多态:不同的对象对同一个指令有不同的执行

存在继承,方法重写,父类引用指向子类对象

重载:

在Java中,同一个类中的多个方法可以有相同的方法名称,但是有不同的参数列表,这就称为方法重载(method overloading)。

参数列表又叫参数签名,包括参数的类型、参数的个数、参数的顺序,只要有一个不同就叫做参数列表不同。

重载是面向对象的一个基本特性。参数列表:个数,顺序,类型的不同,重载存在由于同类中

重写存在于子类中,子类对父类的方法进行重写

向上转型:父类引用指向子类对象

向下转型:必须先向上转型,再向下转型(强转),当需要调用子类中独有的方法时,父类引用转向子类对象引用,实际上还是转换成子类相对应的子类引用,

package name.zrm.ooProgram.oop1;
//一个类如果没有显性的继承一个类那么他相当于继承了Object
public class Demo extends Object{
public static void main(String[] args) {
Object o = new Demo();
Demo demo = (Demo)o;
}
}

接口:

 

 接口中的变量都是静态常量:

 接口中变量都是public static final修饰的,不添加默认为这个;必须赋初值

接口中的抽象方法都是public abstract修饰,可以不加,默认都是这个,现在接口中也可以实现方法为默认方法(default)修饰

package name.zrm.ooProgram.oop1;

public interface Fly {
//接口中变量都是静态常量,为public static final修饰,无论加不加都是这个,不加的时候
//会默认添加,且不能使用其他的方法修饰符
int X = 10;
public static final int Y = 10;

//方法默认为抽象方法,且是public abstract修饰,可以省略不写,但是默认添加
void method();
public abstract void method1();

//接口中现在可以添加实现方法,但是方法为默认方法只能是default修饰,且不能省略
default void ab(){
System.out.println(10);
}

}

抽象类:
package name.zrm.ooProgram.oop1;

public abstract class Abstact1{
//抽象类中成员变量可以是任何权限修饰的,与接口不一样
int age;//default
private int age1;
protected int age2;
public int age3;

//抽象方法为权限修饰符(除了私有)+abstract修饰,跟接口有不同,且不能省略
abstract void a();//default
protected abstract int aa();
public abstract int m();


}
抽象类的抽象方法在被子类实现的时候,权限修饰符权限不能比父类中抽象方法的权限低
在继承和实现接口的时候,子类必须实现所有的抽象方法,抽象类实现接口的时候可以不用实现接口中的方法
抽象类中可以有构造方法,接口不能有构造方法,抽象类和接口都不能实例化

 

 

 

 

内部类:

package name.zrm.ooProgram.oop1;

public class Main {
//内部类
class M {
int x;
int y;

int method() {
return 10;
}
}

public static void main(String[] args) {
//创建内部类对象
Main.M m = new Main().new M();
}
}
内部类可以访问外部类的私有是属性

 

package name.zrm.ooProgram.oop1;

public class Main {
//内部类
class M {
int x;
int y;
}

//匿名内部类
T t = new T() {
public int method() {
return 10;
}
};
//静态内部类
static class inner{

}

public static void main(String[] args) {
//创建内部类对象
Main.M m = new Main().new M();
//创建一个静态内部类
Main.inner inner = new Main.inner();
}
}

原文地址:https://www.cnblogs.com/zrmj/p/11447454.html