1、类的继承

1)子类在继承父类的时候,会自动拥有父类所有的成员。
2)一个类只能继承一个父类
3)一个类可以被多个类继承。
4)可以多层继承,C继承B,B继承A。

2、重写父类方法

1)要和父类的方法名一样,参数和返回类型也要一样
2)子类的方法不能比父类有更严格的权限。

3、super关键字

1)在子类复写父类的方法的时候,想要能够访问父类的同名方法
可以在子类中 采用super.变量名 super.方法名 来实现。
2)使用super 来调用父类的构造方法
在子类中的构造方法里面, super();就可以调用父类的构造方法。

注意super();调用父类的构造方法必须在子类的构造方法的第一行,并且只能出现一次。

4、final关键字

1)final 修饰的类不能被继承
2)final修饰的方法不能被重写
3)final修饰的变量只能赋值一次。

不然编译会报错。

5、抽象类

1)有的时候在类中不写 方法体,这样的方法是抽象方法,包含这样方法的类,是抽象类。
2)抽象方法必须使用 abstract 来修饰。: abstract void shout();
3)抽象的类必须也由abstract 来修饰。
4)抽象的类不一定有抽象的方法,只需要abstract来修饰。
5)抽象的类不能实例化对象,因为无法调用抽象方法。
6)要想实现抽象方法,需要一个子类 继承 抽象类,然后 复写 其方法。

6、接口

1)一个类中所有的方法都是抽象的,可以称之为接口。
2)定义接口时使用 interface关键字来声明。
3)接口的所有方法都是抽象的,所以不能实例化对象。
4)通过一个类 implements 接口类 来实现接口中所有的方法。
5)当一个类实现接口时,如果这个类是抽象类,则可以实现接口的部分方法,否则实现所有接口的全部方法。
6)一个类可以实现多个接口,用逗号隔开。

所谓接口实现,就是一个类implements 接口,然后复写接口的所有方法。

7、多态

1)在同一个方法中,由于参数类型不同而导致的执行效果各异的现象就是多态。
2)这种参数类型的不同 可以是参数个数相同,类型不同;可以是参数类型相同,个数不同。
3)他们可能使用同一个函数,但是参数类型不同导致。输出不一样。

//定义接口
interface Animal{
    void shout(); //定义抽象方法shout;
}

//定义cat 类实现Animal接口
class Cat implements Animal{
//实现shout()方法
     public  void shout() {
        Log.v(TAG,"mm");
    }
}


//定义dog 类实现Animal接口
class Cat implements Animal{
//实现shout()方法
     public  void shout() {
        Log.v(TAG,"ww");
    }
}


public class Test {
    public static void main(String [] args) {
    Animal an1 = new Cat();//创建一个Cat 对象,使用Animale类型的变量an1引用
    Animal an2 = new Cat();//创建一个Cat 对象,使用Animale类型的变量an2引用
    animalShout(an1);//调用animalShout()方法,将an1作为参数传入
    animalShout(an2);//调用animalShout()方法,将an2作为参数传入
    }
public static void animalShout(Animal an) {
    an.shout();//调用实际参数的shout()方法
}
}

运行结果:
mm
ww
8、匿名内部类

1)如果方法的结构被定义接口类型,那么就需要一个类来实现接口,并根据该类来实现实例化。
2)除此之外我们还可以通过匿名内部类来进行对象实例化。

//定义动物类接口
interface Animal{
    void shout();//定义方法shout()
}

public class Test {
    public static void main(String [] args) {

    //定义匿名内部类作为参数传递给animalShout()方法
    animalShout(new Animal() {
        //实现shout()方法
        public void shout() {
        Log.v(TAG,"mm");
        }
    });

        }

    public static void animalShout(Animal an) {
        an.shout();//调用传入对象an的shout()方法
    }
}

1)在调用animalShout()方法时,在方法的参数位置上写new Animal(){ },这相当与创建了一个实例对象,并将这个对象作为参数传递给animalShout()方法。
2)在new Animal()后面有一对大括号,表示创建的对象为Animal的子类的实例,该子类为内部类。
3)在打括号里编写匿名子类实现代码。

参考文档:
Java基础入门 传智博客高教产品研发部 

本人郑重声明,本博客所著文章、图片版权归权利人持有,本博只做学习交流分享所用,不做任何商业用途。访问者可將本博提供的內容或服务用于个人学习、研究或欣赏,不得用于商业使用。同時,访问者应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人的合法权利;如果用于商业用途,须征得相关权利人的书面授权。若以上文章、图片的原作者不愿意在此展示內容,请及时通知在下,將及时予以刪除。