类的继承
来源:互联网 发布:疯狂java讲义的错误 编辑:程序博客网 时间:2024/09/21 06:37
1.类与类之间可以相互继承,也就是父类和子类。
父类:
public class Father{
.....
}
子类:
public class Son extends Father{
....
}
2.继承的作用:
子类可以拥有父类的属性和方法。也就是说,如果new一个子类对象,这个对象既可以调用自己的方法,也可以调用父类的方法。即父类是子类的子集。子类拥有父类的所有属性和方法。
3.抽象类:
为什么会引进抽象类这个概念,具体以我自己的水平还不能理解,只能简单介绍他的一些特性。
//两小时后更新^_^
为什么要把父类写成抽象类?q:子类都有的方法 但是子类实现的方式不同!所以可以抽象这个类然后所有的子类就可以重写都拥有这个功能!
抽象类的关键词为abstract,抽象类不能被实例化!!!!!!抽象类不能被实例化!!!!!!抽象类不能被实例化!!!!!!(重点重点!记住啊!),父类只能有方法但却不能有方法实体(这句话是错误的,抽象类父类是可以有具体方法的只是无法被实例化)。
继承的子类去实现父类的抽象方法,也就是重写(如果子类重写了所有父类的抽象方法,那他就不是abstract类了!可以实例化!常见错误,NULLPointerException!)。
//重写是基于继承,同一个方法可以重新写他的功能。而重载则是在同一个类中,具体要求是相同的,比如说参数类型,数目。
//final: 如果给一个子类前加了final,那这个子类就不能被继承了。
4.接口:
因为继承只能是单继承,即Son这个子类只能继承父类Father的属性和方法。那么如果子类Son还有一些父类没有的方法或者属性呢?这个时候就引进了接口这个属性。
接口关键词:Interface,接口中只能有方法名同样不能有方法实体,这一点和抽象类父类是一样的。
接口的实现:
public class Son extends Father implements interface {
....
}
//也就是说,继承给了子类 父类所有的东西,而接口则是给了子类父类没有的东西。
5.多态:
我觉得学习这个是最让我惊奇的...突然感觉对内存的引用有了一点模糊的认识。
多态是由于继承而产生的一种形态。 例如,
父类 对象 =new 子类();这在以前压根是不能理解的东西,为什么能这样写呢。
我们知道,new一个class,等于在内存中新建了一个对象,那么 父类 对象 同样的创建了一个对象,这个“=”等于说是把new出来对象的“值”,也就是引用传递给了父类产生的这个对象,为什么可以这样写呢?我觉得是子类这个对象所拥有的方法都在父类中有写,(当然不算接口,子类只是把父类的所有方法重写了)所以调用的时候可以直接调用父类的对象,这个对象拥有所有子类的属性和方法(不包含接口)。
例如 Father f = new Son(); 这样我们在判断到底是哪个son的时候就不用一个一个区判断,直接给出f去执行需要的方法。(大大减少代码量)
instance of :判断对象是否是某个类型。 例如 Boolean f instanceof Son(1);
那么如果我想把程序中的对象转回来转为子类的对象,我想要去实现子类的接口,该怎么办呢?
我们可以 Son s = (Son) f; 这样又可以把this的对象转为子类。(强制类型转换)
6.接口的处理。
接口中可以 Interface i = new 子类();
这样我们就可以操作接口中的方法并对其进行调用。
7.封装
//这些东西是自己琢磨出来的,有些东西可能是错的。
封装的具体流程就是,private 属性,但是Public属性的set 和get方法,这样使用的时候只能调用数值却不能去修改他。(感觉就是程序的安全性得到提高?)
欢迎大牛指点错误,水平一样的欢迎探讨!O(∩_∩)O
- c++类的继承:私有继承,公有继承,保护继承
- 类的继承 保护继承和私有继承
- C#类的继承-什么是继承
- 继承QVector----模板类的继承
- 类的一般继承与虚继承
- 继承:单继承、派生类成员的访问属性、多继承、菱形继承、虚继承,菱形虚拟继承
- java 类的继承
- 类的继承
- C#类的继承
- JavaScript类的继承
- C++ 类的继承
- 类的继承
- Java类的继承
- 类的继承
- 抽象类的继承
- 类的继承
- 类的继承用法
- 类的继承方式
- JAVA 十六进制与字符串的转换
- sql常用语句
- allocation tracker
- 注解系列知识总结(一)
- 超文本传输协议版本 2 [http/2 spec]
- 类的继承
- 动态创建顺序表,并进行插入删除操作
- C++必须使用【初始化列表】初始化数据成员的三种情况
- codeforces-743C-math
- 我也来学设计模式_策略模式
- 为什么使用正则test( )第一次是 true,第二次是false?
- Internet Transaction Server (ITS) mobile – Developing ITS templates from scratch
- IE这个大坑之细数遇到的坑
- Spring MVC + MyBatis3 实现的简单个人博客