类
在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;
}
}