在子类构造方法中一定要调用父类构造方法,可以通过super指定调用父类的哪个构造方法,如果没有指定,在实例化子类时会自动调用父类的无参构造方法。
创新互联公司专业做网站、成都网站建设,集网站策划、网站设计、网站制作于一体,网站seo、网站优化、网站营销、软文平台等专业人才根据搜索规律编程设计,让网站在运行后,在搜索中有好的表现,专业设计制作为您带来效益的网站!让网站建设为您创造效益。class Test02 {
Test02(){
System.out.println("父类的无参构造方法");
}
}
public class Test01 extends Test02 {
Test01(int v){//自动调用父类的无参构造方法
System.out.println("子类的有参构造方法");
}
Test01(){
System.out.println("子类的无参构造方法");
}
public static void main(String[] args) {
new Test01(5);
new Test01();
}
}
运行结果:
class Test02 {
Test02(int v){
System.out.println("父类的有参构造方法");
}
}
public class Test01 extends Test02 {
Test01(int v){
super(v);
System.out.println("子类的有参构造方法");
}
Test01(){
super(7);//注掉该行Test01()处会飘红
System.out.println("子类的无参构造方法");
}
public static void main(String[] args) {
new Test01(5);
new Test01();
}
}
public class Test01 {
private int id;
Test01(){
System.out.println("无参构造方法");
this.method();
}
Test01(int a,int b){
this(a);
System.out.println("有参构造方法2:"+a+","+b);
}
Test01(int id){
this();
this.id = id;
System.out.println("有参构造方法1:"+id);
}
public void method(){
System.out.println("方法1");
}
public static void main(String[] args) {
new Test01(10,20);
}
}
运行结果:
class Test02{
public final void method(){//final修饰,表明该方法为最终方法,不可以被覆盖重写
System.out.println("final修饰的方法");
}
}
public class Test01 extends Test02 {
final int ID = 10;
int num = 9;
// public void method(){//会报错:'method()'不能覆盖'review.Test02' 中的 'method()';重写方法是 final
//
// }
public static void main(String[] args) {
// new Test01().id = 100;//报错:无法为 final 变量 'id' 赋值
System.out.println(new Test01().num);//9
}
}
abstract class Test02{
public abstract void method();
public void method2(){
this.method();//此处的this代表的是继承该类的类,而不是该类本身
System.out.println("抽象类内部可以有普通方法");
}
}
public class Test01 extends Test02 {
@Override
public void method() {
System.out.println("实现抽象类的抽象方法");
}
public static void main(String[] args) {
Test02 test02 = new Test01();
test02.method();
System.out.println("===========");
test02.method2();
}
}
运行结果:
class Test02 {
Test02(int v){
System.out.println("父类的有参构造方法");
}
}
public class Test01 extends Test02 {
static class Inner{
Inner(int v){
System.out.println("静态内部类的构造方法");
}
}
class Inner2{
Inner2(int c){
System.out.println("普通内部类的构造方法");
}
}
static int id;
Test01(){
super(7);
System.out.println("子类的无参构造方法");
}
static void mathod(){
System.out.println("子类的静态方法");
}
public static void main(String[] args) {
int a = Test01.id;
Test01.mathod();
System.out.println("===========华丽的分割线===========");
Test01 test = new Test01();
int b = test.id;//合法但不推荐
test.mathod();//合法但不推荐
System.out.println("===========华丽的分割线===========");
Test01.Inner2 inner2 = new Test01().new Inner2(1);//普通内部类的调用
Test01.Inner inner = new Test01.Inner(4);//静态内部类的调用
}
}
运行结果:
补充:
class Test1004{
public static Test1004 a = new Test1004();
public static Test1004 b = new Test1004();
{
System.out.println("构造代码块");
}
static{
System.out.println("静态代码块");
}
}
public class StaticDemo {
public static void main(String[] args) {
Test1004 t = new Test1004();
}
}
运行结果:
访问限定符 | 类内部 | 同一包的其他类 | 其他包的子类 | 其他包的其他类 |
---|---|---|---|---|
private | Y | N | N | N |
default | Y | Y | N | N |
protested | Y | Y | Y | N |
public | Y | Y | Y | Y |
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。