【概念笔记】抽象类、接口、内部类

1. 抽象类(语法,如何继承抽象类)
被abstract修饰的类。该种类不能被直接实例化,必须被某个类继承(extends),并实现了所有的抽象方法后才能被实例化。

abstract class AbsClass {//抽象类

public void printA() {。。。};
abstract void print();//抽象方法,只有声明没有实现
}//此时,无法new AbsClass();

class ClassA extends AbsClass {//继承抽象类

void print() {//实现抽象方法
System.out.println("aaaaa");
}
}//此时,可以new ClassA ()

2. 接口(语法,如何实现接口)
接口是一种特殊的抽象类,这种抽象类中只包含方法的定义,而没有方法的实现(抽象类中,不一定所有的方法都没有实现)。
[修饰符] interface <接口名> {属性和方法的声明}
解释:接口不能被实例化,必须被某个类实现(implements)后才能被实例化。
注意:接口中所有的方法只能使用abstract或public修饰
public <返回类型> <方法名>();


2.1 单继承、多实现


3. 面向对象编程3大特征(封装(将属性和行为封装在一个类中),继承,多态)
3.1 多态的两种表现形式(方法的重载,父类引用指向子类对象)


4. 向上转型,向下转型(重点,难点)
向上转型(自动转型)
Animal mAnimal = new Dog();此时,父类引用只能访问到公共的属性和方法
向下转型(强制转型)
Dog mDog = (Dog)new Animal();
当子类对象赋值给父类引用时,可以将该父类引用强转成子类引用。
转型成功,对象将重新显示子类新增的特性(新增的属性和方法)


//先向上,再向下
Parent parent = new Child();//向上转型,将隐藏子类新增的特性
Child mChild = (Child)parent;//向下转型,重新显示子类特性


5. intanceof关键字
为了防止强转失败的情况发生,
在强转之前,最好先使用instanceof来判断之后再转。


6. 引用型参数传递扩展(重点)
6.1 如果传入参数是一个类的引用:可以传入该类的引用,或者该类的子类的引用。
6.2 如果传入参数是一个抽象类的引用:必须传入该抽象类的实现类的对象引用
6.3 如果传入参数是一个接口的引用:必须传入该接口的实现类的对象引用


7. 内部类与匿名内部类(语法是关键)
定义在其他类内部的类。
内部类可以访问其所属类的属性和方法。

在所属类外部访问内部类
非静态内部类中:
A a = new A();//先创建所属类对象
A.B b = a.new B();//再使用所属类对象,创建非静态内部类的对象
静态内部类:
A.B b = new A.B();//直接new

匿名内部类:没有名字的内部类,这种类只能在定义的时候获取其实例,之后将无法再次实例化。
语法:
1. 创建一个匿名内部类,继承ClassA,并覆盖eat方法
Class A = new ClassA() {
public void eat() {};
};
2. 创建一个匿名内部类,实现InterfaceA,并实现eat方法
InterfaceA A = new InterfaceA() {
public void eat(){};
};
3. 创建一个匿名内部类,继承AbstractA,并实现eat方法,覆盖sleep方法
同上


8. static修饰:成员变量,成员方法,内部类,初始化块
1)[修饰符] static <变量名> [=初始化];
被public修饰的静态变量,可以在类的外部用<类名>.<变量名>直接访问
2)[修饰符] static <方法名>([参数列表]){[代码块]}
被public修饰的静态方法,可以在类的外部直接使用<类名>调用
3)[修饰符] static class <类名> {[代码块]}
被public修饰的静态内部类,可以在类的外部直接new <所属类>.<内部类名>的方式创建该类的对象
4)static {[代码块]}
被static修饰的初始化块,先与普通初始化块、普通变量的初始化、构造函数执行。
按照先父类后子类,以及从上至下的顺序依次执行。


9. final修饰:成员变量,成员方法,类
被final修饰的基本数据类型,值不可以改变;
修饰的引用数据类型,其本身不可以修改;
修饰成员方法不可以覆盖,
修饰的类不可以继承。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值