马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1、基本概念
继承:是类与类之间的关系,可以理解为一个类从另一个类获取方法和属性的过程。
格式:
class 父类 {
}
class 子类 extends 父类 {
}
继承关键字:
extends, 所有的类都直接或间接继承于 java.lang.Object,当一个类没有继承,则默认继承object(在 java.lang 包中,不需要 import)祖先类。
继承类型:
2、super 与 this 关键字
super: => 用来引用当前对象的父类。
this: => 指向自己的引用。public class Demo{
public static void main(String[] args) {
Dog obj = new Dog("花花", 3);
obj.say();
}
}
class Animal{
String name;
public Animal(String name){
this.name = name;
}
}
class Dog extends Animal{
int age;
public Dog(String name, int age){
super(name);
this.age = age;
}
public void say(){
System.out.println("我是一只可爱的小狗,我的名字叫" + name + ",我" + age + "岁了");
}
}
注意: 无论是 super() 还是 this(),都必须放在构造方法的第一行。
① 在构造方法中调用另一个构造方法,调用动作必须置于最起始的位置。
② 不能在构造方法以外的任何方法内调用构造方法。
③ 在一个构造方法内只能调用一个构造方法。
④ 如果编写一个构造方法,既没有调用 super() 也没有调用 this(),编译器会自动插入一个调用到父类构造方法中,而且不带参数。
super 与 this 的区别:
super 不是一个对象的引用,不能将 super 赋值给另一个对象变量,它只是一个指示编译器调用父类方法的特殊关键字。
3、重写
重写: 在类继承中,子类可以修改从父类继承来的方法,也就是说子类能创建一个与父类方法有不同功能的方法,但具有相同的名称、返回值类型、参数列表。
重写后,被覆盖的方法在子类中只能通过super调用。public class Demo{
public static void main(String[] args) {
Dog myDog = new Dog("花花");
myDog.say(); // 子类的实例调用子类中的方法
Animal myAnmial = new Animal("贝贝");
myAnmial.say(); // 父类的实例调用父类中的方法
}
}
class Animal{
String name;
public Animal(String name){
this.name = name;
}
public void say(){
System.out.println("我是一只小动物,我的名字叫" + name + ",我会发出叫声");
}
}
class Dog extends Animal{
// 构造方法不能被继承,通过super()调用
public Dog(String name){
super(name);
}
// 覆盖say() 方法
public void say(){
System.out.println("我是一只小狗,我的名字叫" + name + ",我会发出汪汪的叫声");
}
}
方法重写的原则:
① 覆盖方法的返回类型、方法名称、参数列表必须与原方法的相同。
② 覆盖方法不能比原方法访问性差(即访问权限不允许缩小)。
③ 覆盖方法不能比原方法抛出更多的异常。
④ 被覆盖的方法不能是final类型,因为final修饰的方法是无法覆盖的。
⑤ 被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。
⑥ 被覆盖的方法不能为static。如果父类中的方法为静态的,而子类中的方法不是静态的,但是两个方法除了这一点外其他都满足覆盖条件,那么会发生编译错误;反之亦然。即使父类和子类中的方法都是静态的,并且满足覆盖条件,但是仍然不会发生覆盖,因为静态方法是在编译的时候把静态方法和类的引用类型进行匹配。
3、final关键字
(1)是最终的意思,可以修饰类,方法,变量。
(2)特点:
A:它修饰的类,不能被继承。
B:它修饰的方法,不能被重写。
C:它修饰的变量,是一个常量。
(3)相关:
A:局部变量
a:基本类型 值不能发生改变
b:引用类型 地址值不能发生改变,但是对象的内容是可以改变的
B:初始化时机
a:只能初始化一次。
b:常见的给值
定义的时候。(推荐)
构造方法中。 |