一、构造方法 每个类都够构造方法,他是一个特殊的方法,是用来创建实例,初始化对象的方法。构造方法:名称与类同名()无返回值,void是无返回值类型 eg:public String print(){ } public int print(){ } public HelloWorld print(){ } public HelloWorld(){ }、、这是构造方法 public HelloWorld( int a){ }、、这是构造方法
public HelloWorld(int a,String b){ }、、这是构造方法 方法重载:同一个类,方法名相同,方法参数的个数,或者类型不同,我们称为该方法被重载了,普通方法和构造方法都可以被重载;
static修饰符:,修饰属性,方法,代码块,(内部类可以用static修饰)。static修饰的属性或方法属于类所有,所有对象的属性和方法。特殊,静态代码块。 eg:public static void main(String [ ] args){} 静态方法 public static name=“小明”;静态属性 static{ String name=“a”; } 方法里不可以使用static 在加载类的过程中,最先完成 静态变量的内存分配,然后是静态代码块的内存分配,然后是创建对象比如this对象;
this关键字,代表当前对象,表示类还没有被实例化之前的引用,当类被实例化之后,实例对象就指向这个this
继承(inheritance)、 继承(inheritance)通过extend 关键字来实现,其中SubClass称为子类 SuperClass称为父类,基类或超类。访问修饰符是public 整个项目可见,无访问修饰符该包可见,不可以用private和protected修饰父类。java中所有的类都默认继承Object类 super关键字,用来调用父类的构造方法,方法,属性。this关键字,用来调用自身的属性,方法,构造方法。
子类继承了父类的哪些财产呢? 继承public protected修饰的属性和方法,无论是否在一个包中 同包中,继承默认属性和方法(friendly) private修饰的属性和方法不能继承,无法继承父类的构造方法
方法的重写(overriding)和重载(overloading) 重写方法必须与被重新的方法具有相同的方法名,相同的参数列表,返回值类型相同或者是其子类。不能缩小被重写的方法的访问权限。 重载,必须在同一个类中方法名相同参数列表(个数或类型)不同,与返回值和访问修饰符无关。
继承关系中的构造方法 继承关系总的构造方法调用规则如下。 当子类没有通过super或this显示的调用父类和自身的构造方法,则默认调用父类的无参构造方法。如果使用super调用父类的其他构造方法,则不执行父类无参构造方法。 在构造方法中如果有this或super语句,只能是第一条语句。 在一个构造方法中不允许同时出现this 和super,调用构造方法。 在类方法中不允许出现,this或super关键字。 在实例方法中this和super不要求是第一条,可以共存。 抽象类和抽象方法。 使用abstract修饰的类或方法称为抽象类或抽象方法。 被abstract修饰的类无法实例化,抽象类 它可以没有,有一个,或者多个抽象方法。 被abstract修饰的方法,抽象方法只有声明没有实现,有抽象方法的类必须声明为抽象类,子类必须重写所有的抽象方法,否则子类还是一个抽象类。 public abstract void print();是抽象方法,没有大括号,即实现。
final修饰的类不能在被继承。 final 修饰的方法不能再被重写。 final修饰的属性,将称为常量。 final String name="sss";只能赋值一次 abstract 只能修饰 类和方法,不能修饰 属性和构造方法。 final 可以修饰 类,属性,方法,不能修饰 构造方法。 final修饰的对象,即引用型变量,变量的值是不可变,而指向的对象的属性值是可以改变的。多态(polymorphism)、 将一个父类的引用指向一个子类的对象,称为向上转型(upcasting),自动进行类型转换。 Animal animal=new Dog(); 向下转型, Animal animal =new Dog();此时无法调用子类的特有方法。需要向下转型 Dog dog=(Dog)animal 这时方可调用子类特有方法; 继承是多态的基础,没有继承就没有多态。 子类重写父类的方法(多态下调用子类重写后的方法)。 父类引用指向子类对象。
instanceof用于引用类型对比,对象在前类型在后if(dog instanceof Animal){},对象(dog)的类型和第二个参数(Animal)所指定的类必须要有继承关系,instanceof通常和强制类型转换结合使用。
interface(接口) 接口是特殊的类 他是一种约定 接口的命名规则与类相同。 接口中只有全局静态常量,接口的常量必须有初始值 public static final int MAX_MENU=1; 接口中的所有方法都是抽象方法,自动加上public abstract修饰 和抽象类一样,接口不能实例化,不能有构造方法。 接口的实现类必须实现接口的所有方法,否则必须定义为抽象类。 接口直接通过extends实现继承关系,一个接口可以继承多个接口,不能继承类。通过implements来实现接口 [访问修饰符] Interface 接口名 extends SuperInterface1,SuperInterface2,…,SuperInterfacen{} class 类名 extends 父类名 implements 接口1,接口2,。。。,接口n{}
