面对对象的三个基本特征(继承)(构造方法)
来源:互联网 发布:mac爱奇艺没弹屏了 编辑:程序博客网 时间:2024/06/03 13:33
构造方法:
构造方法也叫构造器,
当一个对象被创建时候,构造方法用来初始化该对象。
构造方法和它所在类的名字相同,但构造方法没有返回值。
通常会使用构造方法给一个类的实例变量赋初值,或者执行其它必要的步骤来创建一个完整的对象。
不管你与否自定义构造方法,所有的类都有构造方法,因为Java自动提供了一个默认构造方法,它把所有成员初始化为0。
一旦你定义了自己的构造方法,默认构造方法就会失效。
构造方法不能被static、final、synchronized、abstract、native修饰。
百度上的解释为:
一个类被实例化也就是被new的时候最先执行的是构造函数,如果你有留心。你会发现很多类里面根本没有写构造函数。
在java类中,如果不显示声明构造函数,JVM(Java Virtual Machine(Java虚拟机)) 会给该类一个默认的构造函数。一个类 可以有多个构造函数。构造函数的主要作用 一是用来实例化该类。二是 让该类实例化的时候执行哪些方法,初始化哪些属性。当一个类声明了构造函数以后,JVM 是不会再给该类分配默认的构造函数。
没有参数的构造方法又叫缺省构造方法
下面是一个使用缺省构造方法的例子:
// 一个简单的构造函数class MyClass { int x; // 以下是构造函数 MyClass() { x = 10; }}
可以像下面这样调用构造方法来初始化一个对象:
public class Way { public static void main(String args[]) { MyClass t1 = new MyClass(); MyClass t2 = new MyClass(); System.out.println(t1.x + " " + t2.x); }}大多时候需要一个有参数的构造方法。
// 一个简单的构造函数class MyClass { int x; // 以下是构造函数 MyClass(int i ) { x = i; }}初始化对象
public class Test { public static void main(String args[]) { MyClass t1 = new MyClass( 10 ); MyClass t2 = new MyClass( 20 ); System.out.println(t1.x + " " + t2.x); }}
子类调用父类的构造方法
父类的构造方法不能被子类继承。子类不能直接通过方法名调用父类的一个构造方法,而是要通过super关键字调用父类的一个构造方法,
super语句必须位于子类构造方法的第一行。
来看个例子
package helloJava;class GrandPa{public GrandPa()//这是定义的构造方法,不是默认的构造方法{System.out.println("default GrandPa");}public GrandPa(String name){System.out.println(name);}}class Father extends GrandPa{public Father(){System.out.println("default Father");}public Father(String grandPaName,String fatherName){super(grandPaName);//对GrandPa有参构造方法的调用System.out.println(fatherName);}}public class Son extends Father{public Son(){System.out.println("default Son");}public Son(String grandPaName,String fatherName,String sonName){super(grandPaName,fatherName);//对Father有参构造方法的调用System.out.println(sonName);}public static void main(String args[]){Son s1=new Son();Son s2= new Son("My GrandPa", "My Father", "My Son");}}
考察要点
l 识别合法的构造方法;2 构造方法可以被重载,一个构造方法可以通过this关键字调用另一个构造方法,this语句必须位于构造方法的第一行;
3 当一个类中没有定义任何构造方法,Java将自动提供一个缺省构造方法;
4 子类通过super关键字调用父类的一个构造方法;
5 当子类的某个构造方法没有通过super关键字调用父类的构造方法,通过这个构造方法创建子类对象时,会自动先调用父类的缺省构造方法
6 构造方法不能被static、final、synchronized、abstract、native修饰,但可以被public、private、protected修饰;
7 构造方法不是类的成员方法;
8 构造方法不能被继承。
阅读全文
0 0
- 面对对象的三个基本特征(继承)(构造方法)
- 面对对象的三个基本特征(继承)(this和super)
- 面向对象的三个基本特征(讲解)
- 面向对象的三个基本特征(讲解)
- 面向对象的三个基本特征(讲解)
- 面向对象的三个基本特征(讲解)
- 面向对象的三个基本特征(讲解)
- 面向对象的三个基本特征(讲解)
- 面向对象的三个基本特征(讲解)
- 面向对象的三个基本特征(讲解)
- 面向对象的三个基本特征(讲解)
- 面向对象的三个基本特征(讲解)
- 面向对象的三个基本特征(讲解)
- 面向对象的三个基本特征(讲解)
- 面向对象的三个基本特征(讲解)
- 面向对象的三个基本特征(讲解)
- 面向对象的三个基本特征(讲解)
- 面向对象的三个基本特征(讲解)
- SQL实现统计字符串出现的频次
- Drcom下如何优雅地使用路由器上网
- 单片机 相关基础知识(一)
- 微信公众平台配置服务器之后实现自动回复
- Angularjs4.0 创建新项目
- 面对对象的三个基本特征(继承)(构造方法)
- 微信公众平台配置服务器后自定义菜单
- MyEclipse中Struts2配置
- Sublime Text3下两款Markdown插件 支持实时预览与代码高亮
- plsql连接Oracle数据库、解决plsql中文乱码、免注册在Oracle官网下载文件、Oracel Database全套下载链接
- Android 减包 - 减少APK大小
- PowerDesigner将建好的数据表格导出到excel
- android AsyncChannel机制 --- 双通道连接
- Python简单的名片管理器