变量

一.关于变量的作用域:

成员变量:

类的属性

局部属性:

方法中定义的变量或者是方法的形式参数.

对于java语言来说,作用域控制是通过块来控制的.

块的概念:一对{}包裹,该代码片段就成为一块.

对于某个快内定义的变量:

a:对于当前的块,不能再定义同名的变量,即使类型不同也不行.

b:对于当前的块,定义了某个变量,在块外不能够访问到块中定义的变量

如果存在块的嵌套:

那么外层块定义的变量,在内层块是可以访问到的.

课堂练习:定义一个类,类中有2个成员变量,再分别定于两个方法,这两个方法的作用是给成员变量赋值.

eg: public static void main(String[]args){
String myson=sons(2);
String mydaughter=daughter();
System.out.println("我的儿子是"+myson+"我的女儿是"+mydaughter);
}
public static String sons(int a){
String sons;
switch(a){
case 1:
sons="jhon";
break;
case 2:
sons="peter";
break;
case 3:
sons="goodboy";
break;
default:
sons="smallboy";
}
return sons;
}
public static String daughter(){
    String daughters="arey";
return daughters;

}

二.构造方法(构造器)

1.类中特殊的方法,对于定义来讲,它的方法名必须和类名一直,并且不反悔任何的值,主要不能添加void

2.在new(创建一个对象的时候),一定会去调用它的构造方法.但是如果我们没有自己定义构造器的话,编译器

会帮我们偷偷添加一个一个默认的构造器:

类名(){

}

如果我们主动添加一个包含参数列表的构造器,并且没有主动添加默认的构造器,则再通过new类名();

就会遇到编译问题.

eg:public class Point {
int x=10;
int y=10;
int z=10;
Point(){
System.out.println("constucted");
}
public int multiple(){
for(int i=0;i<1;i++){
double num=4.3;
for(int j=0;j<1;j++){
System.out.println("i:"+i);
System.out.println("num:"+num);
}
}
return x*x+y*y+z*z;
}
public static void main(String[]args){
Point point=new Point();
point.x=10;
int mulSum=point.multiple();
System.out.println(mulSum);
}
}

三.方法重载overload

1.对于同名的方法,具有不相同的参数列表,我们在访问的时候,通过调用方法传入不同的参数列表,就可以找到我们特定的方法

2.当我们定义多个重载的时候,在编译阶段的话,编译器可以根据我们方法形式参数数量以及类型来区别不同的方法,执行阶段可以

根据我们调用的时候传入的参数列表,仅仅拥有不同的返回值类型,是不被视为重载的.

练习:定义一个类,类中有个1维数组的成员变量(short).提供两个方法,第一个方法接受一个int数组,第二个方法接受一个long数组.

两个方法均将各自形参传入的数组中元素的值进行求和.并且与本身我们类成员变量数组的和做一个差.最终返回这样的结果

eg:

:public class ClassText2 {
short[]arrShort;
int sum;


void ClassText2(){                      
System.out.println("ClassText2 execute!");
}
ClassText2(int a){                   
arrShort=new short[]{2,3,4};
for(int i=0;i<arrShort.length;i++){
sum+=arrShort[i];
}
}
int getArrPlusResult(int[]arr){
int sumAll=0;
for(int i=0;i<arr.length;i++){
sumAll+=arr[i];
}
return sumAll-sum;
}
long getArrPlusResult(long[]arr){
long sumAll=0;
for(int i=0;i<arr.length;i++){
sumAll+=arr[i];
}
return sumAll-sum;
}
public static void main(String[]args){
ClassText2 text=new ClassText2(3);
text.ClassText2();
int sum1=text.getArrPlusResult(new int[]{1,2,3});
long sum2=text.getArrPlusResult(new long[]{1,2,3});
}
}

四.类的继承

子类继承或者说派生自父类.子类可以享有父类的方法.在初始化一个子类对象的时候,调用其中的方法;

如果该方法中在父类也有定义.并且参数列表不同,则调用到的是子类特有的方法.否则调用的是父类方法.

注意:如果仅仅是他们的返回值类型不同,则会出现编译错误.

eg:public class People {
String name;
String nationality;
void eat(){
System.out.println("people eat");
}
public static void main(String[]args){
People green=new People();
green.eat();
Teacher wu=new Teacher();
wu.teach();
}
}
class Student extends People{
String name;
String nationality;
void study(){
System.out.println("student study");
}
    void eat(){
    System.out.println("Student eat");
    }
}
class Teacher extends People{
String name;
String nationality;
void teach(){
System.out.println("teacher teach");
}
void eat(){
System.out.println("teacher eat");
}
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值