java继承和抽象类

197 阅读2分钟

继承

子类自动拥有父类中可以继承的属性和方法。 只支持单继承,不支持多继承

父类
package cn.itcast.demo01;

public class Emoloyee {
	String name;
	public void work() {
		System.out.println("员工在工作");
	}
}
子类
package cn.itcast.demo01;

public class Develop extends Emoloyee{
	
	public void print() {
		System.out.println(name+"------");
	}
}

父类子类中成员变量 子类的对象,调用成员变量 子类自己有使用自己的,子类没有调用父类的。 在子类中,调用父类的成员,关键字super.调用父类的成员 this.调用本类成员 super.调用的自己的父类成员

package cn.itcast.demo02;

public class Zi extends Fu {
	int i = 2;
	public void show() {
		int i = 3;
		/*
		 * 调用父类中的i,同名的情况下
		 */
		System.out.println(super.i);
	}
}

重载:

方法名一样,参数列表不同,同一个类的事情 继承后,子类父类中成员方法的特点 子类的对象调用方法的时候 子类自己有使用子类的,子类自己没有,调用父类的. 方法重写 子类中,出现了父类一模一样的方法的时候,子类重写父类的方法

package cn.itcast.demo03;

public class Zi extends Fu{
	public void show() {
		//方法的覆盖
		super.show();
		System.out.println("子类的方法show2");
	}
}

抽象类

package cn.itcast.demo04;
/*
 * 定义类开发类
 * 抽象类
 * 		抽象方法必须存在于抽象类中,必须用abstract修饰
 * 		抽象类强制子类重写抽象方法.....
 */
public abstract class Develop {
	
	public abstract void work();
}
package cn.itcast.demo04;

public class JavaEE extends Develop{
	@Override
	public void work() {
		// 重写父类的抽象方法
		//去掉abstract修饰符,加上方法主体
		System.out.println("JavaEE工程师在开发");
		
	}
}

补充

package cn.itcast.demo05;
/*
 * 抽象类,可以没有抽象方法,可以定义带有方法体的方法
 * 让子类继承直接使用//
 * private 无法修饰抽象方法,因为抽象方法的目的就是重写。所有不能一起使用
 * final static.....
 */
public abstract class Animal {
	public void sleep() {
		System.out.println("动物睡觉");
	}
}