2019-08-01 ABCDEF

package com.foreknow.extend;
/**
 * 构造器的重载(overload)
 * 构造器的名称相同,参数类型不同
 * 方法也可以重载,方法的名称相同,参数类型不同
 * 注意:重载是一个类中同名的方法,但是参数不同   与返回值类型无关
 * @author Administrator
 *
 */

public class A {
    private String name;
    private String school;
    private int age;
    
    public A(String name,String school){
        this.name = name;
        this.school = school;
    }
    public A(int age){
        this.age = age;
    }
    public A(){
        System.out.println("default......");
    }
    
    public A(String s){
        System.out.println(s);
    }
    
    public A(String s,int a){
        System.out.println(s+"--"+a);
    }
    
    public int sum(int a,int b){
        return a+b;
    }
    
    public int sum(int a,int b,int c){
        return a+b+c;
    }
    
}

package com.foreknow.extend;
/**
 * 在继承的关系中如果public class B extends A, B类会去找A
 * 类中默认的无参数的构造器,如果没有就会报错
 * 解决的办法,在父类中再创建一个无参数的构造器就可以
 * @author Administrator
 *
 */
public class B extends A{
    public static void main(String[] args) {
        B b = new B();
        int sum = b.sum(1, 2);//3
        System.out.println(sum);
        int s = b.sum(1, 2, 3);//6
        System.out.println(s);
        
        A a1 = new A("s",2);
        A a2 = new A();
        A a3 = new A("s");
    }
}

package com.foreknow.extend;
/**
 * 方法重写(orverride)/方法覆盖
 * 1.会有继承关系
 * 2.子类中的方法要与父类相同(方法名称,参数,返回值类型)
 * @author Administrator
 *
 */
public class C {
    public String m1(){
        
        return "abc";
    }
}

package com.foreknow.extend;

public class D extends C{
    public String m1(){
        String ss = "tom";
        return ss;
    }
    
    public static void main(String[] args) {
    D d = new D();
    System.out.println(d.m1());
    }
}

package com.foreknow.extend;
/**
 * this:表示当前对象自身
 * this(参数):调用同一个类中不同的构造方法      一定要写到方法的第一行否则编译报错
 * this.方法名()
 * 
 * super(父类、超类)
 * super(参数):调用父类中的构造器
 * super.属性名:调用父类中的属性
 * super.方法名:调用父类中的方法
 * @author Administrator
 *
 */
public class E extends F{
    
//  public E(){
//      super.
//  }
    
    public E(String name) {
        //调用父类中的构造器
        super(name);
    }


    
//  private String name;
    
//  public E(){
//      System.out.println("无参数的构造器....");
//  }
//  public E(String name){
//      this();
//      this.name = name;
//  }
//
//  public String getName() {
//      return name;
//  }
//  public void setName(String name) {
//      this.name = name;
//  }
//  
//  public void showInfo() {
//      System.out.println(this.getName());
//  }
//  
//  public E(int a){
//      this("tom");
//      System.out.println(a);
//  }
//  public E(int a,int b){
//      this(a);
//      System.out.println(a+b);
//  }
    public static void main(String[] args) {
        E e = new E("tom");
        System.out.println(e.getName());
//      e.setName("tom");
//      e.showInfo();
    }
}

package com.foreknow.extend;

public class F {
    private String name;
    public F(){
        
    }
    public F(String name){
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    
}

你可能感兴趣的:(2019-08-01 ABCDEF)