类,封装,继承,访问修饰符

在java中万物皆对象,而类是对象的抽象(集合),对象是类的实例。
类中包括的部分:属性(成员变量或全局变量)、方法(成员函数)、构造函数。
属性的定义为:访问修饰符+类型名+属性名称
方法的定义:访问修饰符+(其它修饰符)+返回值类型+方法名(参数)+{ ···}

注意:

1)引用数据类型默认值为null;
2)变量如果不是全局变量必须对其赋初值,否则会出错无。
3)类、属性、方法的命名规则:
属性的首字母必须大写;方法的首字母小写,多用动词短语;属性的首字母小写,用名词。
4)方法的返回值只有一个。多个方法可以相互调用,但不可以相互定义。
5)return 以后的代码将不会执行,直接跳出这个方法。
即使返回值类型为void,代码中还是可以出现return ;这行代码。

封装

将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过类提供的方法来实现对隐藏信息的操作和访问。
一般将属性进行封装,而方法不封装。
例如 
private int age;
public void run(){
}

属性 age 就被封装了。而run()却没有被封装。
封装三步走:
1)private 对属性进行封装;
2)设置get方法以用此函数获得属性的值;
3)设置set方法,对成员变量进行设置。

继承

注意子类继承的是父类的属性和方法而不是构造器
在java中一个子类只能有一个父类;但一个父类却可以有多个子类;

继承中的初始化顺序

父类属性
父类构造函数
子类属性
子类构造函数

重写(覆盖)与 重载

子类可以重写父类的方法
注意:子类重写父类方法时,子类方法的:方法名、参数、返回值类型必须与父类的完全一样。
而重载中只有参数名相同,参数必须不同之外,其它没有什么关系。

重写VS重载
      位置    方法名    参数列表    返回值    修饰符       
 重写  子类     相同     相同        无关    不能比父类严格
 重载  同类     相同     不同        无关    无关

super

在子类中调用super.属性或方法可以直接调用父类的属性和方法。
在子类构造器中的第一行调用super(参数)可以直接调用父类的构造器,是什么参数就调用那个构造函数。如果没有这个super(参数);会默认先调用父类中无参的构造器。
注意:super关键字主要是用在子类中用于子类去调用父类的属性,方法和构造器。与我们后面写的this是不同的this主要是调用此调用对象的属性、方法、构造器。

访问修饰符

 private:为自身访问权限;
 defuals:为包访问权限;
 protected:为不同包的子类访问权限;
 public :  为全部访问权限。

this

this一般用于方法或构造函数中。
方法中一般用于对调用这个方法的对象的属性或方法进行调用。
若在构造器中用于对本类中其它构造器进行调用。(注:必须用在第一行代码)
例如:

    public class Dog {
    int age;
    public Dog(){
        this(10);

    }
    public Dog(int age){
        this.age = age;
    }

}

这个this(10);调用了另一个构造函数。

自动拆包和装包主要用在包装类中

  public class test {

    public static void main(String[] args) {

//***********************************************
//自动拆包和装包
//************************************************
        Integer i =new Integer(10);
        Integer j = new Integer(10);
        System.out.println(i ==j);
        System.out.println(i.equals(j));
        Integer k =10;//自动装包
        System.out.println(k==j);
        int h =new Integer(10); //自动拆包。
        System.out.println(h==k);//自动拆包。

//****************************************
// 复习字符串的比较
//****************************************
        String s1="abc";
        String s2="abc";
        String s3 =new String("abc");
        String s4=new String("abc");
        System.out.println(s1==s2);
        System.out.println(s2==s4);
        System.out.println(s1.equals(s3));

    }

}

可变参数

Java1.5增加了新特性:可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。注意:可变参数必须位于最后一项。当可变参数个数多余一个时,必将有一个不是最后一项,所以只支持有一个可变参数。因为参数个数不定,所以当其后边还有相同类型参数时,java无法区分传入的参数属于前一个可变参数还是后边的参数,所以只能让可变参数位于最后一项。

可变参数的特点:

(1)、只能出现在参数列表的最后;

(2)、…位于变量类型和变量名之间,前后有无空格都可以;

(3)、调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中一数组的形式访问可变参数。

例如:

public class Varable {
 public static void main(String [] args){
  System.out.println(add(2,3));
  System.out.println(add(2,3,5));
 }
 public static int add(int x,int ...args){
  int sum=x;
  for(int i=0;i<args.length;i++){
   sum+=args[i];
  }
  return sum;
 }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值