对java基础的一个复习总结吧。
1、继承:通过使用关键字extends,子类可以继承父类所有的方法和属性,但是无法使用 private(私有) 的方法和属性,一次只能继承一个父类。
2、重写:重写(override)是子类对父类的允许访问的方法的实现过程进行重新编写!返回值和形参都不能改变。
3、重载:重载(overload) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。
4、多态:存在的三个条件
5、抽象类:abstract class来定义抽象类。
6、抽象方法:如果一个类包含抽象方法,那么该类必须是抽象类。
7、封装:简单的说就是成员私有,通过set和get方法来获取。
8、接口:是抽象方法的集合,接口通常以interface来声明。
9、包(package):Java使用包(package)这种机制是为了防止命名冲突,访问控制,提供搜索和定位类
自己写了一段代码来使用以上的知识点。
父类:animals。这是一个抽象类,因为里面声明了抽象方法eat。对于成员变量name,使用了封装的思想,声明为私有,只能通过getName和setName访问。
还有一个move方法,用于给子类重写的。
子类:Cat。实现了eat,重写了move,重载了move,新增了自己的方法sleep。
子类:Dog。实现了eat,重写了move。
以上三个类放在animals包里面。

main.java:
import animals.*;
public class main {
public static void main(String args[]){
//父类指向子类引用(向上转型)
animals cat = new Cat("cat");
animals dog = new Dog("Dog");
cat.eat();
dog.eat();
//重写(与父类不同)
cat.move();
dog.move();
//cat.sleep();会报错,因为animals里面没有sleep
//cat。move(5);会报错,因为animals里面没有重载move(int)
if(cat instanceof Cat){//判断是不是Cat类的一个实例
Cat newCat = (Cat)cat;//向下转型
System.out.println(newCat.getName());
newCat.sleep();
newCat.move(5);//重载,有相同名字的函数,但是参数列表不同
}
}
}
animals.java
package animals;
//只能有一个公有类
//有抽象函数,所以为抽象类
public abstract class animals{
private String name;//封装
//构造函数
animals(String name){
this.name = name;
}
//具体的方法,由子类实现,所以定义为抽象
public abstract void eat();
//同用的方法,用于重写
public void move(){
System.out.println("动物可以移动");
}
//通用的方法,父类实现
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
}
Cat.java
package animals;
//猫
public class Cat extends animals{
//每个类都得有自己的构造函数
public Cat(String name) {
super(name);
}
//因为继承了动物类,所以成员name,以及setName、getName.move都有的
//因为父类是抽象类,必须实现抽象方法
public void eat(){
System.out.println("猫吃鱼");
}
//可以对父类存在的方法进行重写
public void move(){
//调用父类的同名函数
super.move();
System.out.println("猫可以跑!");
}
//重载
public void move(int num){
move();
System.out.println("猫跑了"+num+"s");
}
//新增的属于自己的方法
public void sleep(){
System.out.println("Slepping!");
}
}
Dog.java
package animals;
public class Dog extends animals{
//每个类都得有自己的构造函数
public Dog(String name) {
super(name);
}
//因为继承了动物类,所以成员name,以及setName、getName.move都有的
//因为父类是抽象类,必须实现抽象方法
public void eat(){
System.out.println("狗吃啥?");
}
//可以对父类存在的方法进行重写
public void move(){
//调用父类的同名函数
super.move();
System.out.println("狗也可以跑!");
}
}
输出:

原文:http://www.cnblogs.com/wzben/p/5979324.html