黑马程序员 面向对象学习二,黑马程序员面向对象
黑马程序员 面向对象学习二,黑马程序员面向对象
----------android培训、java培训、java学习型技术博客、期待与您交流!----------
3、关于多态:多态是指“一种定义,多种实现”。
(1)、对于子类重定义父类的成员方法,我们有如下说法:如果参数列表相同(参数个数和参数类型相同),则称为覆盖(Override),否则称为称为重载(Overload),重载都是编译时多态。
(2)子类对象是父类对象:如果有Student extends Person,那么
newStudent() instanceof Person为true
newPerson() instanceof Person 为 false
(3)、父类对象引用子类实例:即父类与子类的赋值相容性,也就是父类能够引用子类实例,而反之就不行:
Personp = new Student();//赋值相容,子类对象是父类对象,父类引用子类实例,运行时多态
Students = new Person();//赋值不相容,父类对象不是子类对象
4、 关于继承:继承是类与类之间,或接口与接口之间的一种“传承”关系,顾名思义,既然是继承,那么继承类定然是具有被继承类的某些成员属性和成员方法。java中的使用关键字extends声明某个类继承指定的父类,格式:
[修饰符] classSonClass extends FatherClass。
java中 的类是单继承的,怎么说呢,如果一个类A继承了B,那么它就不能直接继承C,形象一点就是一个儿子不能有两个亲生父亲。这样我们自然会问,既然是单继承,一脉相承,那么最初的类是什么呢?在西方的神话中,上帝创造了万物,那么,java中也有这样的一个“上帝”,它就是Object类,它是类层次的根。Object类没有成员变量,提供了多个最常用的成员方法,这些成员方法具有“属性”的特征,换句话说,也就是每个派生类都有该方法。
继承的原则:(1)、子类继承父类的成员变量。(2)子类继承父类出构造方法以外的成员方法。(3)、子类可以增加成员,包括成员变量和成员方法,可以重定义从父类继承来的成员,但一旦继承,就不能删除。
关于第(2)点的说明,我们知道,一个类的对象实例的创建时通过构造方法来实现的,子类没有继承父类的构造方法,那么子类是怎样创建对象的呢?子类是通过调用父类的某个构造方法而得以创建本子类对象的,另外,子类可以用super调用父类的构造函数,而当一个子类没有声明自己的构造方法时,java会默认通过super调用其父类无参数的构造方法,从而子类得以创建对象。
一个简单的例子:
public class CheckConstructor {
public static void main(String[] args) {
new Student();//该句用于验证创建Student时调用了父类Person的构造函数
System.out.println("----------------------");//华丽的分割线呐
//以下这句演示在创建GoodStudent类的对象的时候通过super调用了其父类Student构造函数
new GoodStudent("小明");
}
}
class Person{
Person(){
System.out.println("This is Person");
}
}
class Student extends Person{
Student(){
System.out.println("This is Student");
}
Student(String str){
System.out.println("Hello "+str);
}
}
class GoodStudent extends Student{
GoodStudent(String str){
super(str);//演示通过super调用父类Student的构造函数
}
}
运行结果:
This is Person
This is Student
----------------------
This is Person
Hello 小明
5. 成员变量 VS 局部变量.
- 成员变量定义在类中, 在整个类中都可以被访问. 成员变量随着对象的建立而建立, 存在于对象所在的堆内存中.* 成员变量有默认初初始化值.
- 局部变量只定义在局部范围内(函数内、语句内等). 局部变量存在于栈内存中, 作用范围结束后, 变量空间自动释放.* 局部变量没有默认初始化值.
6. 构造代码块. 写在独立{}中的代码.
- 作用: 给对象进行初始化.
- * 对象一旦建立就执行, 优先于构造函数执行.
- 和构造函数的区别: 构造代码块是给所有对象进行统一初始化, 而构造函数是给对应的对象初始化.
7.* this关键字.
- 特点: this代表其所在函数所属对象的引用. 换言之, this代表类对象的引用.
- 使用情景: 当函数内需要用到调用该函数的对象时, 就用this.
- 静态方法中不能写this、super关键字.
总结:面向对象的内容实在太多,这些也只是冰山一角而已。
----------android培训、java培训、java学习型技术博客、期待与您交流!----------
相关文章
- 暂无相关文章
用户点评