笔记on3

来源:互联网 发布:js 获取选中的radio 编辑:程序博客网 时间:2024/06/10 10:29

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();

     x.pringtln("张三", 20);

    x.print("李四");

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

父类的定义

定义了   publicclass person {

   String 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 Stringname;

   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

 

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

 

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

http://blog.csdn.net/zhoujn90/article/details/9393545

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

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。

   使用protected在子类和本包中可见可以省略get方法,在外包也可以访问

protected Stringname;

   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做包名

0 0