java--- 面向对象

继承

1 java继承与C++继承的不同

java继承区别于C++继承的一大特点: java支持"多重继承", 即: B为C父,A为B父

一般情况下,java不支持多继承,即 public class C extends A,B {} is wrong!

但通过implements 可以变相使用多继承,

                                                          public class C implements A,B{}

                                   (这里本质上是不同接口的使用,逗号分隔两个接口)

2 super和this

super用来使用父类的方法;this用来使用自己的方法:

    class Animal { void eat()

{ System.out.println("animal : eat"); }

}

    class Dog extends Animal

{ void eat() { System.out.println("dog : eat"); }

     void eatTest()

{ this.eat();// this 调用自己的方法

super.eat();// super 调用父类方法 } }

3 构造器

构造器: 构造函数和构造方法

如果父类构造函数无参,则无需改变什么; 但如果父类构造函数有参,那么必须在子类中通过子类的构造函数中使用   super(int n); 相当于c++里的初始化列表

  [例]  

多态

1 什么是多态

可以通过相同的表达形式,实现不同的功能

2 多态的必要条件

  • 继承 (继承抽象类)
  • 重写  (重写抽象类,否则子类还是抽象类)
  • 父类引用指向子类对象Parent p = new Child();   (和c++不同,必须是父类引用p指向子类对象Child,没有指针)
abstract  class Animal{
// 抽象类的抽象方法
    abstract void eat();
}
//猫类
class Cat extends Animal {

    public void eat(){
        System.out.println("猫吃鱼");
    }
    public void work(){
        System.out.println("抓老鼠");
    }

}
class Dog extends Animal {
    public void eat() {
        System.out.println("吃骨头");
    }
    public void work() {
        System.out.println("看家");
    }
}

public class Test {
    public static void main(String []args){
        show(new Cat());// 以Cat对象调用show()
        show(new Dog());// 以Dog对象调用show()
        Animal a= new Cat();  //父类引用指向子类对象  ||  向上转型,从a到Cat
        a.eat();  //调用Cat.eat()
        Cat c=(Cat)a;         //a向下转型到c
        c.work();   //调用Cat的work
    }
}

怎么实现继承和重写?

虚函数!

3 虚函数

虚函数的存在是为了多态。

和c++不同,Java不和c++一样使用virtual 作为虚函数前缀

Java 中其实没有虚函数的概念,它的普通函数就相当于 C++ 的虚函数,动态绑定是Java的默认行为。如果 Java 中不希望某个函数具有虚函数特性,可以加上 final 关键字变成非虚函数。

4 重写

java的super方法等价于c++中的初始化列表,

注意下面的super(name,address,number) ,本质上是初始化列表

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值