类小结2:子类对象和父类对象的转换 final关键字 抽象类
来源:互联网 发布:水果蔬菜批发软件 编辑:程序博客网 时间:2024/05/17 05:13
1.子类对象和父类对象的转换
- 子类对象可以视为其父类对象的有一个对象
- 父类对象不能被当作是某一个子类的对象
- 如果一个方法的形参定义的是父类对象,那么调用这个方法时,可以使用子类对象作为实际参数
- 如果父类对象与引用指向的实际是一个子类对象,那么这个父类对象的引用可以强制转换成子类对象的引用;格式为:(子类名)父类名
Person p2 = new Student();System.out.println("Person变量p2.str=" + p2.str);//p2.str显示结果为Person类中定义的结果,因为///子类可以隐藏父类的成员变量,所以把子类对象转换成父类对象是,访问的是被隐藏的成员变量p2.print();//如果子类重写的print()方法,则调用子类重写的方法。否则调用父类的print()方法
2.final修饰符
- final关键字可以修饰类、变量和方法,被修饰的类、变量和方法无法发生改变
1.final修饰成员变量
- 类属性:可在静态初始化块中声明该属性时指定初始值
- 实例属性:可在定义该属性时指定初始值、非静态初始化块中声明该属性、构造方法中指定初始值,否则都没有定义的话,成员变量一直默认为系统指定的0、'\u000'、false或null,它们失去了存在的意义
- 类中的普通方法中不能对 final修饰的成员变量赋值
- final成员变量必须由程序员进行显示初始化,即系统不会对final成员进行隐式初始化。而且在初始化final成员变量前,不能访问该变量,否则会出错
2.final修饰局部变量
- 系统不会对局部变量进行初始化,局部变量必须由程序员手动赋值,
- final修饰的局部变量可以在定义的时候不指定默认值,而在后面只能定义一次默认值。也可以定义的时候指定默认值。
3.final修饰引用类型变量和基本类型变量区别
- final修饰的基本类型变量,不能对其重新赋值,因此基本类型变量不会被改变
- final修饰的引用类型变量,保存的仅仅是一个引用,只能保证这个指向类对象的引用的地址不会改变,已知指向同一个对象,即不能被重新赋值,但是对象本身的内容却完全可以发生改变
4.final修饰的方法和类
- final修饰的方法不能被重写,因此,如果不希望子类重写父类的某个方法,可以使用final修饰该方法
- final修饰的方法虽然不能被重写,但是可以被重载
- final修饰的类不能被继承
3.抽象类 abstract
- 用abstract修饰的类为抽象类,他拥有所有子类的共同属性和方法
- 用abstract修饰的方法为抽象方法,该方法只有声明,没有实现的方法体,方法声明后以";"结束。
- 抽象类中不一定有抽象方法,含有抽象方法的类一定是抽象类
- 抽象类不能被实例化,只能被子类继承,如果子类实现了抽象类的全部抽象方法,则,子类不再是抽象类,都是子类还是抽象类。
- 含有抽象方法的类:1.直接定义了一个抽象方法;2.继承了一个抽象父类,但没有完全实现父类包含的抽象方法;3.实现了一个接口,但是没有完全实现接口包含的抽象方法
- 抽象方法和空方法体不是一个概念 例如:public abstract void test();为一个抽象方法,而public void test(){}方法是一个普通的空方法,有方法体{};
- final和abstract永远不能同时使用,因为abstract修饰的抽象方法需要被子类重写,而final修饰的方法,不能被重写,两者冲突
- abstract不能修饰属性和构造方法.
- static和abstract不能同时使用,因为static修饰的方法是类方法,通过类调用这个方法肯定出错,因为没有方法体,因此没有类抽象方法
- private和abstract不能同时使用.
0 0
- 类小结2:子类对象和父类对象的转换 final关键字 抽象类
- JAVA面向对象5:final关键字、抽象类和接口
- 5.4-全栈Java笔记:面向对象进阶之对象的转型 | FINAL关键字 |抽象方法和抽象类
- 04-面向对象(final关键字)1 04-面向对象(final关键字)2 05-面向对象(抽象类-概述).
- 类和子类对象的转换
- 9 面向对象(final关键字,多态,抽象类,接口)
- 抽象类和关键字final
- 类与对象-->final关键字
- 父类和子类转换浅谈篇(将子类对象赋值给父类对象)
- 父类和子类转换浅谈篇(将子类对象赋值给父类对象)
- 面向对象高级——final关键字的使用以及抽象类的基本概念
- Java笔记2 面向对象<3>final关键字、抽象类、模板方法模式、接口
- final关键字、抽象类
- Java面向对象8——对象转型,动态绑定,抽象类,final关键字及接口
- 面向对象与类的+抽象类和接口小结
- Java子类与父类之间的对象转换
- 抽象类和接口及final关键字
- final关键字、抽象类和接口
- 关机 重启
- 本地的mysql连接虚拟机中Linux中的MySQL需要注意的地方(权限问题)
- Android滑动分析(二)
- 归并排序(递归实现)
- 自定义控件中易混淆方法
- 类小结2:子类对象和父类对象的转换 final关键字 抽象类
- 不要在JS中使用连等赋值操作
- unknown generic error问题解决办法
- VB语言COM组件开发GUID指定方法
- Linux 系列(四)——Redis 集群运维及java整合
- Swift难点-继承中的构造规则实例详解
- 《图解HTTP》学习笔记(五)-与HTTP协作的Web服务器
- Python中的字符编码问题
- nyoj 1058 部分和问题