Java面向对象------构造器

版权声明:欢迎转载 https://blog.csdn.net/qq_37875585/article/details/88101625

构造器(构造器方法)

  1. 什么是构造器

    1. 用于封装对象属性的实例化过程,创建对象时候调用构造器,复用对象属性实例化过程
  2. 语法

    1. 在类中声明,方法名与类名一致(包含大小写)
    2. 不能定义返回值,也不能使用void
    3. 构造方法可以有参数,参数用于初始化对象的属性
    4. 使用 new 运算调用构造器,创建对象
    5. 如果不定义构造器,Java 编译器会自动提供 默认构造器
      1. 如果定义了任何构造器,Java编译器将不再提供默认构造器

构造器可以重载

  1. 参数不同构造器,称为构造器重载。
  2. 构造器重载用于实现:对象有多种数据初始化方式
  3. 对象的数据有多种方式初始化时候,使用重载的构造器

this() 重用构造器

  1. this() 用于在一个构造器值调用另外一个构造器。

  2. this() 方法的目的是为了重用构造器中的逻辑

  3. this() 只能在构造器中调用。

  4. this() 只能写在构造器的第一行。

  5. 案例:

    	public class Demo01 {
    		public static void main(String[] args) {
    			/*
    			 * this() 重用构造器
    			 */
    			Circle c = new Circle();
    			System.out.println(c); 
    		}
    	}
    
    	class Circle{
    		int x,y;
    		double r;
    		double s;//面积
    		
    		public Circle() {
    			this(0,0,1);
    			System.out.println("Circle()"); 
    		}
    		
    		public Circle(int x, int y, double r) {
    			this.x = x;
    			this.y = y;
    			this.r = r;
    			s = Math.PI * r * r;
    		}
    		
    		@Override
    		public String toString() {
    			return "Circle [x=" + x + ", y=" 
    					+ y + ", r=" + r + ", s=" + s + "]";
    		}
    	}
    

继承中的构造器

  1. 构造器不能继承
  2. 子类一定调用父类构造器
    1. 如果父类中没有无参数构造器,默认调用时候子类中会出现编译错误。一般在父类中定义无参数构造器加以解决。
  3. 一般将子类中公共的属性初始化逻辑封装到父类中,子类利用super()方法调用这个构造器,达到复用构造器逻辑的目的。
  4. super() 用于子类调用父类构造器
    1. 默认情况下,编译器自动添加 super(),自动调用服务无参数构造器
    2. 使用super(参数)调用父类中有参数构造器,达到复用构造器的目的
    3. super() 只能在子类构造器中使用,只能写在第一行。
  5. 设计的思路是: 将父类属性的初始化写在父类中,由子类调用,这样就可以复用逻辑,消除冗余的初始化代码。

猜你喜欢

转载自blog.csdn.net/qq_37875585/article/details/88101625