Java构造方法和子类构造方法
Java构造方法
构造方法是用于初始化一个新建的对象。
普通构造方法
- 方法名与类名相同
- 无返回类型
- 子类不能继承父类的构造方法
- 不能被static、final、abstract修饰(有final和static修饰的是不能被子类继承的,abstract修饰的是抽象类,抽象类是不能实例化的,也就是不能new)
- 可以被private修饰,可以在本类里面实例化,但是外部不能实例化对象(注意!!!)
参考文档:https://zhidao.baidu.com/question/502830408.html
public class A{int i=0;public A(){i=2;}public A(int i){this.i=i;}}
默认构造方法
如果没有任何的构造方法,编译时系统会自动添加一个默认无参构造方法
- 隐含的默认构造方法
public A(){}
- 显示的默认构造方法
public A(){System.out.print("显示的默认构造方法")}
重载构造方法
比如原本的类里的构造方法是一个参数的,现在新建的对象是有三个参数,此时就要重载构造方法
当一个类中有多个构造方法,有可能会出现重复性操作,这时可以用this语句调用其他的构造方法。
public class A{private int age;private String name;public A(int age,String name){this.age=age;this.name=name;}public A(int age){this(age,"无名氏");//调用 A(int age,String name)构造方法}public A(){this(1);//调用 A(int age)构造方法}public void setName(String name) {this.name=name;}public String getName() {return name;}public void setAge(int age) {this.age=age;}public int getAge() {return age;}
}
A a=new A(20,"周一");
A b=new A(20);
A c=new A();
String name = a.getName();
String name1 = b.getName();
int age = c.getAge();
System.out.println(name);
System.out.println(name1);
System.out.println(age);
java子类构造方法调用父类构造方法
首先父类构造方法是绝对不能被子类继承的。
子类构造方法调用父类的构造方法重点是:子类构造方法无论如何都要调用父类的构造方法。
子类构造方法要么调用父类无参构造方法(包括当父类没有构造方法时。系统默认给的无参构造方法),要么调用父类有参构造方法。当子类构造方法调用父类无参构造方法,一般都是默认不写的,要写的话就是super(),且要放在构造方法的第一句。当子类构造方法要调用父类有参数的构造方法,那么子类的构造方法中必须要用super(参数)调用父类构造方法,且要放在构造方法的第一句。
当子类的构造方法是无参构造方法时,必须调用父类无参构造方法。因为系统会自动找父类有没有无参构造方法,如果没有的话系统会报错:说父类没有定义无参构造方法。
当子类构造方法是有参构造方法时,这时就会有两种情况。
第一种:子类构造方法没有写super,也就是说你默认调用父类无参构造方法,这样的话就和子类是无参构造方法一样。
第二种:子类构造方法有super(参数)时,就是调用父类有参构造方法,系统会找父类有没有参数一致(参数数量,且类型顺序要相同)的有参构造方法,如果没有的话,同样也会报错。
但是这里会遇到和重载构造方法this一样问题,一个参数的构造方法可以调用多个参数构造方法,没有的参数给一个自己定义值也是可以的。
Java构造方法和子类构造方法相关推荐
- java 构造方法_Java构造方法和子类构造方法
Java构造方法 构造方法是用于初始化一个新建的对象. 普通构造方法 -----方法名与类名相同 -----无返回类型 -----子类不能继承父类的构造方法 -----不能被static.final. ...
- Java中父类构造方法对子类构造方法的影响(不是一句话可以说清的)
推荐的阅读顺序是:先看Test类,再根据提示看父类和子类 让我们通过代码来了解一下: 创建一个父类: public class Father{public Father(){super();//默认调 ...
- java中,子类初始化时一定要调用父类的构造方法,不调用行吗?
一定会调用 原因是这样的: 因为子类继承了父类,那么就默认地含有父类的公共成员方法和公共成员变量,这些方法和变量在子类里不再重复声明.如果你初始化子类的时候,不初始化父类,那么你通过子类调用父类方法或 ...
- java父类与子类的构造方法_java中的加载顺序以及父类与子类的构造方法 | 学步园...
public class fatt { public static void main(String[] args) { animal a=new cat(9); } } class animal{ ...
- Java中关于子类调用父类无参还是有参构造方法的各个类型
1.子类和父类都定义了带参和无参构造方法,且在子类中第一行写了super(xx);并且测试类里面实例化的是子类的带参构造方法,那么,此时不会先调用父类的无参构造方法,而是先调用父类有参构造方法再调用子 ...
- java中子类构造方法和父类构造方法
有继承关系的前提下,子类一定会调用父类的构造方法.因为构造方法是用来进行初始化的,子类要初始化,必须先使用父类的构造方法. 以下情形参考: 1.当子类不重写构造方法,子类默认拥有一个无参构造方法,但是 ...
- java无参构造有参构造_Java ——补充:构造方法 super()与构造方法 无参 有参构造方法 this()与构造方法...
参考文章: 构造方法在new的时候自动执行.且只执行一次.new一次执行一次 每个类都有构造方法,即使不写也有,编译时javac会自动检查类是否有构造方法,如果有,就执行,没有就自动添加一个 如果父类 ...
- Java里的构造函数(构造方法)的特点及作用
Java里的构造函数(构造方法) 一.构造函数(构造方法)定义 构造函数是一种特殊的方法.主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中. 二. ...
- 子类调用父类构造方法 java_JAVA子类调用父类构造方法
父类的构造方法不能被子类继承.以下语句中MyException类继承了java.lang.Exception类. public class MyException extends Exception{ ...
最新文章
- java 扩展类加载器_java实现自定义类加载器
- OpenCV添加(混合)两个图像
- asp.net发布网站的详细步骤
- 第一章:1-01、计算机网络的发展可划分为几个阶段?每个阶段各有何特点?
- java手机大头_Java也强大:
- 聚簇索引和非聚簇索引的原理
- iqooneo5桌面原子组件教程分享
- Datawhale组队学习周报(第039周)
- 解决Tomcat严重: Parse error in application web.xml file at jndi:/localhost/ipws/WEB-INF/web.xml java.lan
- qq邮箱怎么发送html文件在哪里,QQ邮箱怎么发送文件夹
- 2017普实软件迎新年会报道
- Python第一次爬虫三部曲 wallhaven壁纸网站(requests库,re正则库)一看就会
- PERL常见问题解答--FAQ(4)--Data: Strings
- 动态平衡网格交易_本周懒人大树数字币网格价值投资与主流币云算力挖矿实盘记录(12.19日更新)...
- 介绍一下Token?
- 微信小程序获取用户信息相关问题
- 10 个免费的网络监控工具
- OA选型指南:华天动力OA与致远OA
- deepinv2 添加打印机_Deepin环境下Brother 打印机网络打印驱动安装步骤的图解
- 数据库设计的六个基本步骤