JAVA面向对象之继承篇

JAVA——面向对象之继承篇

在这里插入图片描述

面向对象的三大特性:

1、封装 :将共用的,重复的功能进行封装

2、继承:一共性抽取个父类,让子类继承 ,子类可以继承父类的属性和方法同样也可以“重写”父类的方法

​ 形式: public class 子类 extends 父类{

​ }

3、多态:按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态

​ 本章将重点给大家介绍继承

继承:

继承(英语:inheritance)是面向对象软件技术当中的一个概念。这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。

​ 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的属性和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

​ Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。

​ 下面将以人类作为父类而学生类,教师类作为子类为大家说明子类与父类的实现形式。

//父类  
public class Person{
	String name;
	int age;
	String sex;
	
	public void method(){
	     Sysyem.out.println("我是父类");
	}
}

//子类,学生类
public class Student extends Person{
	//通过extends关键字可以让子类继承父类的属性和行为
	
	//也可以增加新的属性和方法
	
	int grade;
    
	@Override
	public void method(){
	    System.out.println("我爱学习");
	}

}

这样一来子类就继承了父类 name,age,sex等属性。

重载与重写

重载:

  •  1. 在一个类中
    
  •  2. 方法名相同
    
  •  3. 参数(类型不同、个数不同)
    

重写规则:

  • 1、方法名和参数必须一致

  • 2、注解@Override重写 检测是否是重写

  • 3、返回值类型必须【小于等于】父类方法的返回值

  • 4、权限必须【大于等于】父类方法的权限

  • a.public 公共的公开的,最大权限

  • b. protected 受保护的

  • c. (default) 默认权限

  • d. private 私有的

如上所示,方法method就在子类中重写

super关键字与this关键字

super: 1. 加载构造器
a. 子类的构造器会默认加载父类的构造器,通过 super();
b. 构造器只能调用一次,不可调用多次
c. 调用构造器的行为必须写在第一行
2. 调用父类成员变量 super.变量
3. 调用父类成员方法 super.方法()

this:1、用this. 可表示当前对象

​ 2、在构造器首行表示调用其他构造器

//父类
public class Person{
	//父类属性
	String name;
	int age;
	String sex;
	int num=10;
	
	//父类构造器
	public Person(){
		System.out.println("我是父类无参构造器");
	}
	//父类方法
	public void method(){
		System.out.println("我是父类的方法");
	}
}
//子类
public class Student extends Person{
	int num=20;
	int age;
	
	//子类无参构造
	public Student(){
		//会默认加载父类无参构造
		this(18);
		System.out.println("我是子类无参构造器");
	}
	
	//子类有参构造
	public Studet(int age){
		this.age=age;
	}
	
	//重写父类方法
    @Override
	public viod method(){
		int num=30;
		System.out.println("局部变量为:"+num);
		System.out.println("本类的成员变量为:"+this.num);
		System.out.println("父类的成员变量为:"+super.num);
	}
}

接口

jdk 1.7:

  1. 接口遵循大驼峰命名规则
    interface 关键字修饰

    a、接口中只能有 final 常量和抽象方法
    b、常量使用 final 修饰,表示不可变
    c、常量名全大写和下划线来区分

    d、方法必须是 public,默认就是 public

jdk 1.8:
1、可以有默认方法,使用 default 修饰
2、静态方法

//接口
public interface HelloWorld {

    // 常量
    final int MAX_NUM = 10;

    // 抽象方法
    void method();

    // 默认方法
    default void defaultMethod() {
        System.out.println("我是默认方法。");
    }
	//静态方法
    static void staticMethod() {
        System.out.println("我是静态方法。");
    }

}
//子类
public class Zi implements HelloWorld {

    @Override
    public void method() {
        System.out.println("重写接口中的抽象方法。");
    }

}

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值