JAVA 面试知识点 5 -- 面向对象编程( OOP)之继承(Inheritance)

1. java的继承(Inheritance)继承是OOP一个重要特性。的主要目的就是代码的re-use,以减少代码量。并且可以很好的理解和管理class们。对java中的继承,了解下面这些要点就差不多了:1. 继承的基本概念2. is-a relationship3. 关键词 extends4. 构造函数和继承5. 调用父类方法和变量: super6. type-casting: ...
摘要由CSDN通过智能技术生成

1. java的继承(Inheritance)

继承是OOP一个重要特性。的主要目的就是代码的re-use,以减少代码量。并且可以很好的理解和管理class们。对java中的继承,了解下面这些要点就差不多了:
1. 继承的基本概念
2. is-a relationship
3. 关键词 extends
4. 构造函数和继承
5. 调用父类方法和变量: super
6. type-casting: upcasting 和 downcasting
7. instanceof
8. override和override的规则 **(hin重要)
9. inner class的继承
10. abstract class 和继承
11. 其他

1. 继承的基本概念

继承是一个允许class继承另一个class的一些通用的fields和methods。几个概念:

  • Super Class: 父类(也被叫做base class or a parent class)。是那个被别人继承自己属性的class。
  • Sub Class: 子类(也被叫做derived class, extended class, or child class)。是继承了另一个class的属性的class。子类也可以添加自己的fields和methods, 也可以覆盖重写(override)父类的方法(不影响父类)。
  • Reusability: 当我们想创建一个新的class的时候,有另一个class包含了一些这个class需要的属性,就可以用继承的方式来re-use代码。
  • 猫和狗都可以继承自动物

2. is-a relationship

要好好的理解继承,一定要牢牢的记住,is-a relationship
子类 is-a 父类。
一只猫也是一只动物。

3. 关键词```extends```

一个继承的例子:

//猫是动物,有动物的属性猫都有,所以Cat可以继承Animal
class Cat extends Animal{
   
	private String color; //猫自己的属性。
	//同时猫也继承了父亲的两个属性: vegetarian和noOfLegs。
	//虽然在父类里是private的,并不能被子类access,但是还是会继承来。
	public Cat(String color) {
   
		//猫不是吃素的,有四条腿。
		super(false,4); //调用了Animal里面第二个构造函数。
		this.color=color;
	}
	//这类method叫setter和getter
	public String getColor() {
   
		return color;
	}
	public void setColor(String color) {
   
		this.color = color;
	}
}
public class Main 
{
    
    public static void main(String args[]) 
    {
    
        Cat cat = new Cat("black");
        System.out.println("Cat color is " + cat.getColor());
        //cat 可以调用父类里的方法。
        //private的field只能通过getter来access
		System.out.println("Cat is Vegetarian?" + cat.isVegetarian());
		System.out.println("Cat has " + cat.getNoOfLegs() + " legs.");
    }
} 

输出:

an animal with 4 legs created
Cat is Vegetarian?false
Cat has 4 legs.
Cat color is black

4. 构造函数和继承

  • 父类里的构造函数不能被子类继承。super()是子类用来调用父类构造函数的方法。 而且只能在子类的构造函数的第一行。
  • 如果要造一个subclass,会先调用父类的构造函数,再调用自己的构造函数super() 就是用来说明要用父类哪个构造函数。
  • 如果在子类的构造函数里没有super(),系统会会调用父类默认 构造函数。如果父类里面没有默认的构造函数,那么子类必须调用相应的构造函数,不然会报错。
     class Animal {
         
     	//如果添加一个带参数的constructor,那么Animal里面就没有default的constructor了
     	public Animal(boolean vegetarian, int legs){
         
    			System.out.println("an animal with " + legs + " legs created");
    		}
     }
     class Cat extends Animal{
         
     	//此时必须
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值