您的位置:首页 > 移动开发 > Android开发

学习Mars 老师 java4android 收获!

2011-10-09 20:17 288 查看
面向对象

生成对象的方法

格式:类名 对象名 = new 类名();

例如 Dog dog = new Dog();右边部分Dog()又称为构造函数

1.Dog d = new Dog();

创建一个Dog的引用

2.Dog d = new Dog();

创建一个Dog的对象

3.Dog d = new Dog();

将创建的Dog对象赋给这个引用



this 使用方法

this 可以担当当前的引用

class Person{
String name;
int age;
String address;

Person(){
}

Person(String name, int age){
this.name = name;
this.age = age;
}

Person(String name, int age, String address){
/*
*this.name = name;
*this.age = age;
*this.address = address;
*/
//this();//无参数调用 Persom()
this(name, age);//调用的 Person(String name, int age)
this.address= address;//减少了代码的重复
}

void talk(String name){
System.out.println("my name is " + name);
}
}
this 可以调用成员变量和成员函数、也可以调用构造函数;

this 可以起到区分成员变量与参数,此时的this 不能省略。

Static 关键字的作用

静态成员变量是类层次的变量,既可通过类名调用,又可以通过对象名调用。

Java 当中只支持单继承

子类不能继承父类的构造函数,只能继承成员变量和成员函数;

在子类的构造当中,必须调用父类的构造函数

不写:编译器默认 会在子类中添加 super();

如果需要调用父类的构造函数 super(参数列表);

super 必须是第一条,否则会出错。

复写 Override -------------------------- | 区别于重载

1.在具有父子关系的两个类中; | 同一个类函数中

2.父类和子类各有一个函数,其定义完全相同; | 参数列表不同

(返回值、函数名和参数列表)都相同 |

注意:如果有重复 可以通过调用 super.XXX(); |

调用父类的函数。 |

向上转型

class Person{
String name;
int age;

void eat(){
System.out.println("吃饭!!");
}

void talk(){
System.out.println("My name is " + name + "My age is " + age);
}
}
class Student extends Person{
String address;
void study(){
System.out.println("I am Studing!");
}
void talk(){
super.talk();
System.out.println("My home is " + address);
}
}


class Test{
public static void main(String args[]){
Student s = new Student();
Person p = s;

p.name = "zhangsan";
p.age = 20;

//p.address = "Beijing"; 此处会报错

p.talk();
//p.study(); 此处会报错
}
}
一个引用能够调用哪些成员(变量和函数),取决于这个引用的类型;

其调用的方法,取决于这个引用所指向的对象

Student s = new Student();

Person p = s;

向下转型

前提:先将一个对象向上转型,在将对象向上转回来。不能直接向上转!!

Person p = new Student();

Student s = (Student)p;

错误的向下转型

Person p = new Person();

Student s = (Student)p;

抽象类(基类)

使用abstract定义的类被称之为抽象类;

1.抽象类不能够生成对象<=>不能实例化;

2.如果一个类当中包含有抽象函数。那个这个类必须被声明为抽象类;

3.如果一个类当中没有抽象函数,那么这个类也可以被声明为抽象类。

1.抽象类不能生成对象

2.构造函数用于生成类的对象

注意:抽象类可以有构造函数

抽象函数是没有函数体的,abstract void eat();

抽象函数是可以被继承的,但是如果不想将子类变为抽象类,则需要将抽象类的抽象方法复写
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: