精华内容
下载资源
问答
  • 调用本类另一种形成的构造函数(应该为构造函数的第一条语句)3)super: 它引用当前对象的直接父类的成员(用来访问直接父类被隐藏的父类成员数据或函数,基类与派生类有相同成员定义时super....

    1)super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句)

    2)this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句)

    3)super: 它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时如:super.变量名 super.成员函数据名(实参)

    4)this:它代表当前对象名(在程序中易产生二义性之处,应使用this来指明当前对象;如果函数的形参与类中的成员数据同名,这时需用this来指明成员变量名)

    5)调用super()必须写在子类构造方法的第一行,否则编译不通过。每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。

    6)super()和this()类似,区别是,super()从子类中调用父类的构造方法,this()在同一类内调用其它方法。

    7)super()和this()均需放在构造方法内第一行。

    8)尽管可以用this调用一个构造器,但却不能调用两个。

    9)this和super不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会通过。

    10)this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块。

    11)从本质上讲,this是一个指向本对象的指针, 然而super是一个JAVA关键字

    展开全文
  • 构造方法的理解

    2018-09-14 18:17:42
    1.(1)构造方法名与类名相同.  (2)构造方法不返回任何值,也没有返回类型.  (3)每个类可以有零个或多个...3.类的继承中,子类的构造方法中默认会有super()语句存在,相当于执行父类的相应构造方法中语句  ...

      1.(1)构造方法名与类名相同.
      (2)构造方法不返回任何值,也没有返回类型.
      (3)每个类可以有零个或多个构造方法.
      (4)构造方法在创建对象时自动执行,一般不能显式地直接调用.

    2.在实例化时被调用,new的时候,new有参数的方法调有参构造方法,反之调无参构造方法

    3.在类的继承中,子类的构造方法中默认会有super()语句存在,相当于执行父类的相应构造方法中的语句 
    如下面代码:

    class Extends_Demo {
        public static void main(String[] args) {
            Cat c = new Cat();            //---------------(1)
            System.out.println("-------------------");
            Cat c1 = new Cat("花花",4);   //----------------(2)
        }
    }
    class Animal {
        private String color;
        private int foot;
    
        public Animal(){
            System.out.println("我是父类无参数构造器");
        }
    
        public Animal(String color,int foot){
            System.out.println("我是父类有参数构造器");
            this.color = color;
            this.foot  = foot;
        }
    }
    class Cat extends Animal{
    
        public Cat(){
            super();                     //---------------可以省略
            System.out.println("我是子类无参数构造器");
        }
    
        public Cat(String color,int foot){              
            //super(color,foot);         //---------------(3)
            super();                     //---------------可以省略
            System.out.println("我是子类有参数构造器");
        }
    }

    输出 
    这里写图片描述

    对比后可以知道,super()代表执行父类无参数构造方法内容,super(color,foot)代表执行父类有参数构造方法。

    展开全文
  • java super关键字

    2020-11-29 00:32:25
    super是指向父类的引用,其用法和this差不多。 1、访问直接父类中被隐藏的父类中成员数据或函数(基类与派生类中有相同成员定义时) ...我们可以子类的构造方法中手动调用super()语句,但和this()语句一样,super

    super是指向父类的引用,其用法和this差不多。

    1、访问直接父类中被隐藏的父类中成员数据或函数(基类与派生类中有相同成员定义时)
    如:
    super.变量名
    super.成员函数(实参)

    2、在子类构造方法中手动调用父类构造方法
    如果子类的构造方法没有显示地调用父类的构造方法,那么编译器会自动为它加上一个默认的super()方法调用,也就是会调用父类的无参构造方法。如果父类没有默认的无参构造方法,编译器就会报错。我们可以在子类的构造方法中手动调用super()语句,但和this()语句一样,super()语句必须是构造方法的第一个语句。

    class Person {
    	long id;
    	Person(long id)
    	{
    		this.id = id;
    		System.out.println("Person constructor is called!");
    	}
    }
    public class Student extends Person{
    	int id;
    	String name;
    	Student(int id,String name,long idx){
    		super(idx);//手动调用父类的构造方法
    		this.id = id;
    		this.name = name;
    		System.out.println(id);
    		System.out.println(name);
    		System.out.println(super.id);//访问直接父类被子类同名成员覆盖的成员
    	}
    	public static void main(String[] arg) {
    		Student stu = new Student(10,"xiaoMing",4415812000l);
    	}
    }
    

    this和super不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义,另外编译器也不会通过(因为this语句也必须是构造方法里的第一条语句,一山不能容二虎)。

    this()和super()方法都只能在构造方法里调用,且必须是第一条语句。

    展开全文
  • 2)子类中调用超类的方法,:子类需要覆盖超类中的A方法,但同时也需要调用超类的A方法,故子类的A方法中调用超类的原有A方法时即可用“super.A”形式完成调用。 import java.util.Date;imp...

    super 关键字的作用有两个:

    1)在子类中调用超类的构造器,完成实例域参数的初始化,调用构造器的语句只能作为另一个构造器(通常指的是子类构造器)的第一条语句出现,

    2)在子类中调用超类的方法,如:子类需要覆盖超类中的A方法,但同时也需要调用超类的A方法,故在子类的A方法中调用超类的原有A方法时即可用“super.A”形式完成调用。

     

    import java.util.Date;
    import java.util.GregorianCalendar;
    \\创建超类Employee
    public class Employee{
        \\创建实例域
        private String name;
        private double salary;
        private Date hireDay;
        \\创建构造器
        public Employee(String n,double s,int year,int month,int day){
            name=n;
            salary=s;
            GregorianCalendar calendar=new GregorianCalendar(year.month-1,day);
            hireDay=calendar.getTime();
            
        }
        
        \\创建域访问器和更改器方法
        public String getName(){
            return name;
        }
        
        public double getSalary(){
            return salary;
            
        }
        
        public Date getHireDay(){
            return hireDay;
            
        }
        public void raiseSalary(double byPercent){
            double raise=raise*byPercent/100;
            salary+=raise;
            
            
        }
    }

    \\创建子类Manager
    public class Manager extends Employee{
        private double bouns;
        /**
         *使用super关键字在子类中调用超类的方法
         * 
         */
        public Manager(String n,double s,int year,int month,int day){
            super(n,s,year,month,day);//调用超类的构造器
            bouns=0;
        }
        
        public double getSalary()/*覆盖超类的getSalary()方法*/

    {
            double baseSalary=super.getSalary();//调用超类的getSalary()方法
            return bouns+baseSalary;
            
        }
        
        public void setBouns(double a){
            bouns=a;
            
        }
    }

    转载于:https://www.cnblogs.com/dengyungao/p/7525168.html

    展开全文
  • java关键字super总结

    2018-08-01 11:10:00
    (1)调用父类的构造方法super语句必须子类构造方法的第一句,系统默认调用无参数的父类构造函数(省略不写super()),若父类有构造函数的重载,则应该父类写下无参数的构造函数,防止出错。super(参数1,...
  • this与super

    2018-10-24 23:58:38
    this是对对象自身的引用。 1.与局部变量做区分时引用。 2.调用成员方法(this可...3.调用父类构造方法需要放在方法中的第一条语句。 4.如果有访问权限限制,则无法通过super访问。 不显性调用构造方法,则会子类...
  • 1.super ...而如果子类其构造的对象时想使用父类的构造方法时,需第一条语句里指明super(父类的参数)方法. 2.final final关键字可以修饰类、成员变量和方法中的局部变量 final修饰的类不能被继
  • super 关键字的作用有两个: 1)子类中调用超类的构造器,完成实例域参数的初始化...2)子类中调用超类的方法,:子类需要覆盖超类中的A方法,但同时也需要调用超类的A方法,故子类的A方法中调用超类的原有...
  • 面向对象备忘知识点

    2020-10-14 15:28:13
    this的用法2一个构造方法中调用其它重载的构造方法,该语句必须是第一行 :this(“aaaa”,11); this的用法3==this作为一个局部变量,它的值是当前对象的引用 : return this; 2 super用法 class EX_...
  • Java为什么没有多继承

    千次阅读 2016-08-02 10:10:25
    Java只支持单继承,不允许多重继承,单继承就是一个类只能有一个父类,多继承就是一个类可以有多个父类。...子类的构造方法中可使用语句super(参数列表)调用父类的构造方法。 多继承造成的问题:钻石危机
  • /* 类的继承 类的继承可以简化类的定义 java只支持单继承,不允许多重继承 ...子类的构造方法中可使用语句super(参数列表) 调用父类的构造方法 如果子类的构造方法中没有显式地调用父类构造...
  • 子类的构造方法中可使用语句super(参数列表) 调用父类的构造方法。 如果子类的构造方法中没有显式地调用父类构造方法,也没有使用this关键字调用重载的其它构造方法,则产生子类的实例对象时,系统默认调用...
  • 面对对象下

    2011-04-19 18:09:00
    子类的构造方法中可使用语句super(参数列表) 调用父类的构造方法。 (4)如果子类的构造方法中没有显式地调用父类构造方法,也没有使用this关键字调用重载的其它构造方法,则产生子类的实例对象时,系统默认
  • 子类调用重载的构造方法时会调用父类的构造方法super();一般如果不写的话会隐式的调用,而且每次调用所有语句之前。 函数,使用父类的地方都可以使用子类,这即是常说的多态,变量的实际类型是被变量...
  • Java-面向对象(下)知识点总结

    千次阅读 2011-06-12 18:13:00
    一、类的继承1.class子类名 extends fuleiming2.Java只支持单继承,不允许多重继承,有多层继承,即一...子类的构造方法中可使用语句super(参数列表) 调用父类的构造方法。 4.父类中定义了有参数的构造函数,子类不
  • /* 类的继承 类的继承可以简化类的定义 java只支持单继承,不允许多重继承 ...可以有多层继承,即一个类可以继承其一个类的子类...子类的构造方法中可使用语句super(参数列表) 调用父类的构造方法  
  • java面向对象下

    2011-03-11 17:01:00
    类的继承 通过继承可以简化类的定义,java只支持单继承,不允许多重继承,即一个类只能有一个父类。...子类的构造方法中可使用语句super(参数列表)调用父类的构造方法。如果子类的构造方法中没有显示地
  • 类的继承

    2011-04-04 23:50:24
    [b]类的继承[/b] ...子类继承父类所有的成员变量和成员方法,但不继承父类的构造方法,子类的构造方法中可使用语句super(参数列表)调用父类的构造方法。 5。如果子类的构造方法中没有显示地...
  • java5

    2020-10-21 22:27:04
    1.实验:利用IDE的debug功能给代码的new语句设置断点...或super语句(二者必居其一,不能同时存 ),执行流程图所示进行实例变量的 显式初始化操作, :public class A{ int value=4; //显式初始化 B b = new B
  • 类的继承:  通过继承可以简化类的定义 。...子类的构造方法中可使用语句 super(参数列表) 调用父类的构造方法。如果子类的构造方法中没有显式地调用父类构造方法,也没有使用 this
  • Java基础3_面向对象下1

    2011-03-11 17:56:00
    <br />/* 面向对象下 继承 extends,类的继承 1.通过继承可以简化类的定义...子类的构造方法中可使用语句super(参数列表)调用父类的构造方法 5.如果子类的构造方法中没有显式地调用
  • 第一部分 类的继承 一.概述 1.通过继承可以简化类的定义 。 2.Java只支持单继承,不允许多重继承。...子类的构造方法中可使用语句super(参数列表) 调用父类的构造方法。  5.如果子类的构
  • //java只支持单继承,不允许多重继承//可以有多层继承,即一个类可以继承某一个类的子类,类B继承了...//子类的构造方法中可以使用语句super(参数列表)调用父类的构造方法public class few {public void displ...
  • 程序报错说空指针异常,表面上看是下面的第二条语句in在调用方法时出错的,实际上是Client.getInstance().getClientInputThread()返回了空对象,也即是ClientInputThread构造方法中的 this.ois = new ...
  • Math.random( )返回0-1的小数,由上题中的Matrix类派生出正方形Square类,在构造方法中调用父类的构造方法(使用super)。 3. 编写一个Java程序,完成以下功能: (1)声明一个名为s的String对象,并使它的内容是“My...
  • java 面试题 总结

    2009-09-16 08:45:34
    当应用程序对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,很多情况下采用异步途径往往更有效率。 17、abstract class和interface有什么区别? 声明方法...
  • 当客户机第一次调用一个Stateful Session Bean 时,容器必须立即服务器创建一个新的Bean实例,并关联到客户机上,以后此客户机调用Stateful Session Bean 的方法时容器会把调用分派到与此客户机相关联的Bean实例...
  • JSTL详细标签库介绍

    2010-11-01 16:37:44
    DivideByZeroException()中调用super()(专门初始化传参数的方法)来传异常处理后对象描述(初始状态)<BR>2、 第一步,创建一个Applet类完成完成两数相除的计算<BR>3、 第二步:处理对象与方法:声明4...
  • 最新Java面试宝典pdf版

    热门讨论 2011-08-31 11:29:22
    29、super.getClass()方法调用 21 30、String是最基本的数据类型吗? 22 31、String s = "Hello";s = s + " world!";这两行代码执行后,原始的String对象的内容到底变了没有? 22 32、是否可以继承String类? 23 33...

空空如也

空空如也

1 2
收藏数 36
精华内容 14
关键字:

在构造方法中如调用super语句