继承,重写,抽象类多态定义的格式

#1.继承

public class Animal {
	String name;
	int id;
public void eat() {
	System.out.println(name + "正在吃");	
	}
public void sleep() {
	System.out.println(name + "正在睡");
}
public void activity() {
	System.out.println(name + "can sing songs");
}

public class Cat extends Animal{
public void introduction() {
	System.out.println("大家好!我是" + id + "号" + name + ".");
}

public class Test {
public static void main(String[] args) {
Cat c = new Cat();
c.name = "小明";
c.id = 1;
c.eat();
c.sleep();
c.activity();
c.introduction();
}

#2.在子类中,访问父类中的成员方法格式:super.父类中的成员方法();

public class Phone{
public void sendMessage() {
	System.out.println("发短信");
}
public void call() {
	System.out.println("打电话");
}
public void showNum() {
	System.out.println("来电显示号码");
}


public class NewPhone extends Phone{
public void showNum() {
	super.showNum();
	System.out.println("显示来电姓名");
	System.out.println("显示头像");
	System.out.println("显示性别");
}


public class Test {
public static void main(String[] args) {
new NewPhone().showNum();
}

#3.重写
当子类中出现和父类一模一样的方法时,会出现覆盖。也称为override重写、复写或者覆盖。
##重写的应用
当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的内容。
注意事项:
1、子类方法覆盖父类方法,必须要保证权限大于等于父类权限。
2、写法上稍微注意:必须一模一样:方法的返回值类型 方法名 参数列表都要一样。
3、不要和重载混淆了,覆盖是在继承里面的。
#总结:当一个类是另一个类中的一种时,可以通过继承,来继承属性与功能。如果父类具备的功能内容需要子类特殊定义时,进行方法重写。

#多态存在的三个必要条件
继承: 多态的前提是必须有子父类关系或者类实现接口关系,否则无法完成多态。
重写: 在使用多态后的父类引用变量调用方法时,会调用子类重写后的方法。
父类引用指向子类对象,比如:Parent p = new Child();

#多态的定义格式:就是父类的引用变量指向子类对象
父类类型 变量名 = new 子类类型();
变量名.方法名();

#普通类多态定义的格式
父类 变量名 = new 子类();

如:	class Fu {}
class Zi extends Fu {}
//类的多态使用
Fu f = new Zi();

#抽象类多态定义的格式
抽象类 变量名 = new 抽象类子类();

如:	abstract class Fu {
     public abstract void method();
     }
class Zi extends Fu {
public void method(){
	      System.out.println(“重写父类抽象方法”);
}
}
//类的多态使用
Fu fu= new Zi();

#接口多态定义的格式
接口 变量名 = new 接口实现类();

如: interface Fu {
	     public abstract void method();
}
class Zi implements Fu {
	     public void method(){
          System.out.println(“重写接口抽象方法”);
}
}
//接口的多态使用
Fu fu = new Zi();

#注意事项:同一个父类的方法会被不同的子类重写。在调用方法时,调用的为各个子类重写后的方法。

如 Person p1 = new Student();
   Person p2 = new Teacher();
  p1.work(); //p1会调用Student类中重写的work方法
  p2.work(); //p2会调用Teacher类中重写的work方法

class Fu {
int num = 4;
}
class Zi extends Fu {
int num = 5;
}
class Demo {
public static void main(String[] args) 	{
	Fu f = new Zi();
	System.out.println(f.num);
	Zi z = new Zi();
	System.out.println(z.num);
}
}


class Fu {
int num = 4;
void show()	{
	System.out.println("Fu show num");
}
}
class Zi extends Fu {
int num = 5;
void show()	{
	System.out.println("Zi show num");
}
}
class Demo {
public static void main(String[] args) 	{
	Fu f = new Zi();
	f.show();
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值