Java 类和对象(2)

Java 类和对象(2)

构造函数

什么是构造函数?
就是给类的实例变量进行初始化的函数

class A{
 public int a;//实例变量
  A (int b) {//自己定义的构造函数//也称为构造函数的重载
  int i; //局部变量
  a=b;//初始化a
 }
 
}

构造函数形式与C++相同:
类名 (形参表)
{
函数体;//构造函数无返回值,不用在类名前面写返回值类型
}

默认的构造函数

只要创建对象,就会调用构造函数。
如果你没有定义自己的构造函数,系统会调用默认的,
默认构造函数自动地将所有的实例变量初始化为零。
一旦你定义了自己的构造函数,系统默认的构造函数将不再实行。

重载

学过C++的都知道,但是这里再说一遍
就是同名函数,形参有区别,但是函数功能相近,允许同名;
简单举例就是:

int add (int a,int b)
int add   (int a, int b,int c)

函数重载与函数返回值类型无关,即使是

int add (int a,int b)
float add (int a, int b)

也不叫函数重载。
重载(overload)简单地说,就是允许多个同名但形参个数、类型或顺序不同的函数方法存在于一个类里面,当被调用时,由形参来决定调用具体方法。
在Java中,同一个类中的两个或两个以上的方法可以有同一个名字,只要它们的参数声明不同即可。在这种情况下,该方法就被称为重载(overloaded)。

类的继承

Java中不允许多重继承,只支持单重继承,即一个子类只能有一个直接父类。
Java中,extends是继承的关键字
格式:
修饰符 class 子类名 extends 父类名{
//子类成员;
}

简单举例就是员工和经理的例子

class employee {
     //类成员
     public  void fun {
     
     }
}
class manager  extends  employee{
  //子类成员
       public  void fun {
       //方法覆盖 子类父类中都有fun函数,
       因为子类也可以访问父类的函数,
       所以在子类中使用fun会覆盖父类的fun
     
     }
}

申明的话 直接在静态主函数 public static void main {String [] arg}函数中
用子类名 子类对象名 = new 子类名();
此处就是 manager m= new manger();
继承后的子类可以访问父类中public 和protected成员
访问权限会在后续展开说。
有兴趣可以自己验证下

package test;
class father{
    int x=1;//x为友元 具体以后再说
	protected int a=1;
	public int b=2;
	public void fun() {
		System.out.println("a的值为"+a);
		System.out.println("b的值为"+b);
	}
	
	private void fun1() {
		System.out.println("a的值为"+a);
		System.out.println("b的值为"+b);
	}
	
}
public class son extends father {
	private int a1=3;
	public int b1=4;
	public void fun() {
		System.out.println("a的值为"+a);
		System.out.println("b的值为"+b);
	}
	
	private void fun2() {
		System.out.println("a1的值为"+a1);
		System.out.println("b1的值为"+b1);
	}
	public static void main(String[] args) {
		son s =new son();
		s.fun();
		s.fun2();
		
		// TODO Auto-generated method stub

	}

}

得出的结果是
a的值为1
b的值为2
a1的值为3
b1的值为4
子类只能访问父类中友元,public,protected成员,不能访问private成员;
在Java中类内缺省修饰符的函数/数据成员就是友元,友元可以被同一包内所有类访问。
需要强调的是,在子类中可以增加变量,增加方法或者覆盖方法,但是绝对不会删除继承的任何变量和方法。
也就是说,上面虽然覆盖了原来的方法,只是调用时调用的新方法,原来继承过来的旧方法还是有的。

下一节介绍Java访问权限
from nuister kjr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值