继承(extends)与接口( implements)

继承(extends)与接口( implements)

类,接口与数组同为Java中的三大引用方法,这里刚学到继承,先来说下继承。

继承就是两个类:通过继承这个方法,使得子类可以继承父类的属性和方法。

  • 子类可以调用父类中的方法和属性
  • 子类可以添加方法和属性作为补充
  • 子类可以重写父类中的方法,前提是其中的返回值类型,方法名,参数类型(个数,顺序)完全一样
  • 一个子类只能有一个父类(类似于一个儿子只能有一个老爸)

例子:
这是父类

package helloword;

public class Father {
	public int a;
	public int b;
	public String name;
	
	public void study() {
		System.out.println(name + "的英语六级的成绩为" + a);
	}
	
	public int count(int a, int b) {
		return a+b;
	}
}

这是子类

package helloword;

public class Son extends Father{
	//重写父类的方法
	public void study() {
		System.out.println(name + "四级考试成绩为" +b);	
	}		
	
	public int count(int a, int b) {
		return a-b;    //加变减
	}
	
	//子类对父类做补充
	public void lazzy() {
		System.out.println("奔哥英语免修");
	}
	
	public static void main(String[] args) {
		Son s = new Son();
		s.a = 493;
		s.b = 425;
		s.name = "韩奔";
		s.study();
		s.lazzy();
		
		System.out.println("奔哥的英语四级比英语六级的分数低了"+s.count(s.a,s.b));
		
	}
}

输出的结果为:

韩奔四级考试成绩为425
奔哥英语免修
奔哥的英语四级比英语六级的分数低了68

以上便可以体现继承的特征。

继承之中还分有向上转型和向下转型,先来说向上转型(自动转型):

格式:		   		 父类 对象名 = new 子类();

自动转型是子类转型为父类,当你用转型后的对象调用方法它是从父类找到子类,所以子类如果重写了父亲类的方法,它优先调用子类中重写的方法。
代码如下:

package hello;
//父类
public class Father {
	public void study() {
		System.out.println("华理404就旭哥有对象");
	}
}

//子类
package hello;

public class Son extends Father{
	
	public void study() {
		System.out.println("最帅的辉哥还是单身");
	}
	
	public static void main(String[] args) {
		Father m = new Son();
		m.study();
	}
}

输出结果:

最帅的辉哥还是单身

以上便是向上转型。

接着便是向下转型:

格式               子类   对象名 = (子类) 要转型的对象名;

例子:

package hello;
//父类
public class Father {
	
	public void study() {
		System.out.println("华理404就旭哥有对象");
	}
	
	public void lazzy() {
		System.out.println("华理机械就一个院士");
	}
}

//子类
package hello;

public class Son extends Father{
	
	public void giveup() {
		System.out.println("皇族永不放弃");
	} 
	
	public void study() {
		System.out.println("最帅的辉哥还是单身");
	}
	
	public static void main(String[] args) {
		//创建一个Son类型的对象s
		Son s = new Son();
		s.study();
		
		//强制将m对象转为Father类型
		Father m = new Son();
		m.lazzy();            //Son中没有lazzy
		m.study();
		
		Son un = (Son)m;
		un.giveup();
	}
}

输出结果:

最帅的辉哥还是单身
华理机械就一个院士
最帅的辉哥还是单身
皇族永不放弃

接口( implements)

接口里的修饰符

  • 方法:public abstract(默认不写)
  • 属性:public static final(默认不写)

接口和类

接口与类有相同也有不同:

  • 接口在写的时候,其中的方法全部都是没有内容的
  • 要想调用接口,就要重写接口中的所有方法
  • 接口中的属性要在定义的时候直接赋值,而且在调用时不可更改
  • 一个类可以调用多个接口
  • 接口没有构造函数,不可以创建对象
  • 通常定义接口属性的时候属性名要大写,方便区分

例子:


public interface Teacher {
   
   public String NAME = "王东"; //初始定义时赋值
   
   public void math(int a,int b);
}


public class Student implements Teacher{
   
   public void math(int a,int b){
   	System.out.println("一加一等于" + (a+b));
   }
   
   public static void main(String[] args) {
   	System.out.println("数学课老师的名字为"+Teacher.NAME);
   	Student ui = new  Student();
   	ui.math(1,1);
   }
}

输出结果:

数学课老师的名字为王东
一加一等于2

接口和抽象类

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值