3.重载 over load ing(重载) 英 ['əʊvə'ləʊdɪŋ] 

 overriding(重写)   英 [ˌəʊvəˈraɪdɪŋ]

        超重

  load 加载

 

  两个(或多个)函数在同一个类中,他们的函数名一样,参数列表不一样,叫做重载。

 

  注意:仅仅是返回值不同的两个函数,不叫重载。是错误

 

  Duplicate method print(String) in typeMyClass

  重复的     方法                         类型

 

4. 继承的基本概念

 继承,父类(基类、超类),子类(派生类) extends 扩展继承

 Java中一个类只能继承一个父类,了解一下,在C++中,一个类可以继承多个父类。

 

 Superclass 超类java.lang.Object  Object是所有类的父类 java.lang是包名lang=language=语言

 java.lang这个包比较特殊,使用时不用import

 

 display = print = show = 显示

 

 子类中重写并覆盖父类中的方法。覆盖=重写

函数重载

public  void print(String name)
   {
     System.out.println("你的名字是:"+name);
   }
   public  void pringtln(String name,int age)
   {
     System.out.println("你的名字是"+name+",年龄"+age);
  }

 

自动调用各个参数

Myclass x=new Myclass();

"张三", 20);

"李四");

子类中重写并覆盖父类中的方法。覆盖=重写

父类的定义

定义了  

public class person {
name;
   int  height;
   void display()
   {
     System.out.println("你的名字:"+name+"你的身高:"+height);
   }
}

子类继承父类

public  class xueshong extends person{
   int  score;
   void display()
   {
     System.out.println("你的名字:"+name+"你的身高:"+"你的成绩:"+score);//子类的重写了父类的  再加个score}

重载后和不重载的显示结果

protected String name;
   protected  int height;
   public person()
   {
     this.name="";
     this.height=77;
   }
   public person(String name,int height)
   {
     this.name=name;
     this.height=height;
   }
// //getter  有protected时可以不使用get
// public String getName()
// {
//   return name;
// }
// public int getHeight()
//子类可以继承父类中的私有函数,在父类中加get。
// {
//   return height;
// }
   public  void show()    //打印方法
   {
   System.out.println("你的名字:"+name+"你的身高:"+height);
   }
}

构造后的结果对比

  

 

 


5.构造函数 constructor

 

 一种特殊的函数,用于初始化对象,在创建对象的时候会被自动调用

 默认构造函数,是指没有参数的构造函数,当我们不编写构造函数的时候,系统会自动生成默认构造函数。

 

1)  函数的名字,必须和类的名字相同。

2)  函数不可以有返回值,但是函数定义的时候不能加void。

public person(String name,int height)

 

3)  构造函数可以有多个。多个构造函数参数不能相同。

 

 The constructor Person() is undefined

 

 当我们编写了有参数的构 造函数后,系统不会生成默认构造函数。

 

 子类的默认构造函数,默认调用父类的默认构造函数。

初始值构造函数,函数值与类名相同。

public person(String name,int height)  //有参的构造函数
   {  //模板,也是个类
     this.name=name;//谁掉构造函数this就是谁
     this.height=height;
   }
Person z.=newperson(“zhang”,170);//可以直接传值,掉构不是默认的造函数

 

 

 

 

6.protected访问修饰符 public private default(默认,friendly) protected,英 [prə'tektɪd]

 

//子类可以继承父类中的私有函数,在父类中加get。
在子类和本包中可见。可以省略get方法,在外包也可以访问
protected String name; 
   protected  int height;
   public person()//无参的构造函数
   {
     this.name="";
     this.height=77;
   }
   public person(Stringname,int height) //有参的构造函数,不能被默认是调用。
   {
     this.name=name;
     this.height=height;
   }
// //getter  使用protected时可以不使用get
// public String getName()
// {
//   return name;
// }
// public int getHeight()
// {
//   return height;
// }
   public  void show()
   {
   System.out.println("你的名字:"+name+"你的身高:"+height);
   }
}
 
 
public  class Jicheng extends person {
   private  int score;
   public Jicheng()
   {
score=100;
   }
   public Jicheng(Stringname,int height,int score)
   {
     super(name,height);//不使用默认的函数,调用父类中的有惨的函数
     this.score=score;
  }

调用的是父类中受保护的

 

不同包中的子类中是否可以访问???

 

可以的prohibit

 

Prohibitedpackage name: java  禁止使用java做包名