您的位置:首页 > 编程语言 > Java开发

Java 继承与接口

2016-04-17 22:16 375 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!
-------

Java 继承与接口
继承
多个类相同的成员可以放到同一个类中 提高了代码的维护性 如果功能的代码需要修改,修改一处即可 让类与类之间产生了关系,是多态的前提 其实这也是继承的一个弊端:类的耦合性很强
Java中继承的注意事项
子类只能继承父类所有非私有的成员(成员方法和成员变量)子类不能继承父类的构造方法,但是可以通过super(后面讲)
关键字去访问父类构造方法

不要为了部分功能而去继承结论:
在子类方法中访问一个变量 首先在子类局部范围找然后在子类成员范围找
最后在父类成员范围找(肯定不能访问到父类局部范围)
如果还是没有就报错。(不考虑父亲的父亲…)
继承中构造方法的关系
如何父类中没有构造方法,该怎么办呢?
子类通过super去显示调用父类其他的带参的构造方法
子类通过this去调用本类的其他构造方法
本类其他构造也必须首先访问了父类构造 一定要注意:
super(…)或者this(….)必须出现在第一条语句
否则,就会有父类数据的多次初始化
方法重写的注意事项
父类中私有方法不能被重写
子类重写父类方法时
访问权限不能更低
父类静态方法,子类也必须通过静态方法进行重写。
final修饰局部变量
在方法内部该变量不可以被改变
在方法声明上,分别演示基本类型和引用类型作为参数的情况
基本类型是值不能被改变
引用类型是地址值不能被改变
多态成员访问特点
成员变量 编译看左边,运行看左边 成员方法 静态方法 编译看左边,运行看左边
静态方法不能算方法的重写
多态的好处和弊端
多态的好处
提高了程序的维护性(由继承保证)
提高了程序的扩展性(由多态保证)
多态的弊端
不能访问子类特有功能 多态中的转型
从子到父 父类引用指向子类对象向下转型
从父到子 父类引用转为子类对象
抽象类概述
一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类。
抽象类特点
抽象类和抽象方法必须用abstract关键字修饰
抽象类不一定有抽象方法,有抽象方法的类一定是抽象类
abstract不能和哪些关键字共存
private 冲突 final 冲突static 无意义
接口
接口成员特点
成员变量: 只能是常量
默认修饰符
public static final
构造方法
没有,因为接口主要是扩展功能的,而没有具体存在
成员方法:
只能是抽象方法 默认修饰符
public abstract
类与类,类与接口以及接口与接口的关系
类与类 继承关系,
只能单继承,但是可以多层继承
类与接口
实现关系,可以单实现,也可以多实现。还可以在继承一个类的同时实现多个接口
接口与接口
继承关系,可以单继承,也可以多继承
抽象类和接口的区别
成员区别 抽象类 变量,常量;有抽象方法;
接口 常量 非抽象方法
关系区别
类与类 继承,单继承
类与接口 实现,单实现,多实现
接口与接口 继承,单继承,多继承
设计理念区别
抽象类 被继承体现的是:”is a”的关系。共性功能
接口
被实现体现的是:”like a”的关系。
扩展功能
内部类的访问特点:
内部类可以直接访问外部类的成员,包括私有。
外部类要访问内部类的成员,必须创建对象。
内部类位置 成员位置(成员内部类)
外部类名.内部类名 对象名=
外部类对象.内部类对象;
局部位置(局部内部类)被静态修饰的成员内部类只能访问外部类的静态成员
内部类被静态修饰后的方法
静态方法
非静态方法局部内部类 可以直接访问外部类的成员 可以创建内部类对象,通过对象调用内部类方法,来使用局部内部类功能
权限修饰符

类及其组成可以用的修饰符
类:
默认,public,final,abstract我们自己定义:public居多
成员变量:
四种权限修饰符均可,final,static
我们自己定义:private居多
构造方法:
四种权限修饰符均可,其他不可
我们自己定义:public
居多
成员方法:
四种权限修饰符均可,fianl,static,abstract
我们自己定义:public居多
内部类概述
把类定义在其他类的内部,这个类就被称为内部类。
举例:在类A中定义了一个类B,类B就是内部类。
内部类的访问特点:
内部类可以直接访问外部类的成员,包括私有。
外部类要访问内部类的成员,必须创建对象。
内部类位置
按照内部类在类中定义的位置不同,可以分为如下两种格式:
成员位置(成员内部类)
局部位置(局部内部类)

成员内部类
外界如何创建对象
外部类名.内部类名 对象名=
外部类对象.内部类对象;
成员内部的常见修饰符
private 为了保证数据的安全性
static 为了让数据访问更方便
被静态修饰的成员内部类只能访问外部类的静态成员
内部类被静态修饰后的方法
静态方法
非静态方法
局部内部类
可以直接访问外部类的成员
可以创建内部类对象,通过对象调用内部类方法,来使用局部内部类功能
局部内部类访问局部变量的注意事项:
必须被final修饰?为什么呢?
因为局部变量会随着方法的调用完毕而消失,这个时候,局部对象并没有立马从堆内存中消失,还要使用那个变量。为了让数据还能继续被使用,就用fianl修饰,这样,在堆内存里面存储的其实是一个常量值
匿名内部类
就是内部类的简化写法。
前提:存在一个类或者接口
这里的类可以是具体类也可以是抽象类。
格式:
new 类名或者接口名() {重写方法;}
本质:
是一个继承了类或者实现了接口的子类匿名对象
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: