Day 11:
1.字符串
Java把内存分成两种,一种叫做栈内存,一种叫做堆内存。
在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。
堆内存用于存放由new创建的对象和数组。
2.抽象类
抽象类需要注意以下几点:
- abstract放在class前,指明该类是抽象类
- abstract放在方法声明中,则该方法是抽象方法,抽象方法没有方法体
- 一个抽象类可以含有多个抽象方法,也可以含有已实现的方法
- 抽象方法必须在子类中被实现,除非子类是抽象类
package com.baidu.demo;
public abstract class Shape {
double dim;//
public Shape(double dim){
this.dim=dim;
}
public abstract double callArea();
public abstract double callPerimeter();
}
定义Shape类的一个子类Circle:
package com.baidu.demo;
public class Circle extends Shape {
public Circle(double dim){
super(dim);
}
public double callArea(){
return 3.14 * dim *dim;
}
public double callPerimeter(){
return 2 * 3.14 * dim;
}
public static void main(String[] args){
Shape shape = new Circle(10);
System.out.println("圆的面积是:"+shape.callArea());
System.out.println("圆的周长是:"+shape.callPerimeter());
}
}
3.多态
多态是指,同一个事件发生在不同的对象上会产生不同的结果。
多态的实现步骤:
- 编写父类
- 编写子类,子类重写父类方法
- 运行时,使用父类的类型、子类的对象
Pet pet = new Dog();
实现多态的两种形式:
- 使用父类作为方法形参实现多态
- 使用父类作为方法返回值实现多态