第三周java学习总结(继承,多态,接口,内部类)

1.继承

1.1概念:就是将对各类的共性内容抽取出来放到一个独立的类中,该类和其他类产生一种"继承关系"(关键字extends修饰)
1.2格式:
权限修饰符 子类名 extends 父类名{ }

1)特点:
在Java中,类与类只支持单继承,不支持多继承,但支持多层继承
2)优点:
提高了代码的复用性;
提高代码的维护性;
存在继承关系,是多态的前提条件;

1.3重点

1.3.1在继承中,如果父类成员变量名和子类变量名相同时,如何执行?

方法:坚持就近原则;
先在子类中的局部位置;
再在子类的成员位置;
然后在父类成员位置找;
若以上位置,则会报错.

1.3.2 如果父类没有提供无参构造方法,子类出现问题(构造方法全部报错),解决方法如下

1)手动给出父类的无参构造方法(建议永远给出无参构造方法)
2)不提供父类无参构造方法,需要通过super(xx),间接的让子类访问父类的有参构造方法
3)通过this()访问本类的无参,然后在通过本类无参构造方法 间接的访问父类的有参构造(super(xx)子类中的构造方法有一个只要能够让父类数据初始化完毕即可!

2.多态

2.1概念:一个事物在不同时刻体现出来的状态.

1)多态的产生前提条件
必须存在继承关系;
必须存在方法重写,子类覆盖父类功能;
必须要有父类引用指向子类对象: 父类名 对象名=new 子类名();
2)多态的好处:
提高代码的复用性,由继承保证;
提高代码的扩展性,由多态保证
3)多态的弊端:不能访问子类特有功能;
解决方法:
创建具体的子类对象 子类名 对象名 = new 子类名(); 这种方式,比较消耗内存空间(在堆内存中开辟新的空间!);
使用向下转型:将父类的引用强制转换子类的引用:
子类名 子类对象名 = (子类名)父类的引用

3.接口

概念:体现的是事物的一种扩展功能;
格式:接口名 对象名=new 子实现类名();

注意事项:
接口不能实例化(及创建对象),但可以通过接口的子实现类实例化;
接口中只能定义抽象方法;

接口与抽象方法的区别:

接口抽象类
成员变量只能是常量,存在默认修饰符public static …可以是成员变量,也可以是常量
成员方法只能是抽象方法,存在默认修饰符public abstract…可以是抽象方法,也可以是方法体
构造方法不存在构造方法存在有参或无参构造方法
设计理念存在like a关系存在like is关系
关系类与类:继承关系;可以单继承,但不能多继承,但可以多层继承
类与接口:实现关系;一个类继承另一个类的同时可以实现多个接口
接口与接口:继承关系,即可单继承,也可以多继承

4.内部类

4.1概念:在一个类内嵌套另一个类;
4.2分类:
成员内部类:在外部类的成员位置
局部内部类:在外部类的成员方法中
匿名内部类:在局部位置使用;(省去繁琐代码,不需要定义类里面的子类或接口的子实现类,写法简单)
4.3成员内部类的调用格式:
非静态的:
外部类名.内部类名 对象名=new 外部类名().new 内部类名();
静态的
外部类名.内部类名 对象名=new 外部类名.内部类名();
4.4 匿名内部类:
格式1:new 类名/接口(){ 重写方法; };
一个接口中有多个抽象方法的匿名内部类格式2:
接口名 对象名=new 接口名(){ 重写方法};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值