IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 继承、多态、抽象类(Java基础系列内容) -> 正文阅读

[Java知识库]继承、多态、抽象类(Java基础系列内容)

写在前面
??你们好,我是小庄。很高兴能和你们一起学习Java。如果您对Java感兴趣的话可关注我的动态.
??写博文是一种习惯,在这过程中能够梳理和巩固知识。

一、继承

什么是继承?
????继承是 Java 面对对象编程技术的一块基石,是面对对象的三大特征之一,也是实现软件复用的重要手段,继承可以理解为一个对象从另一个对象获取属性的过程。

例:孩子继承了父亲的某些特征,但孩子又有自己的行为(性格)。

继承的特点:
????1、子类拥有父类非 private 的属性、方法
????2、子类可以拥有自己的属性和方法,即子类可以对父类进行扩展
????3、子类可以用自己的方式实现父类的方法
????4、子类使用extends关键字继承指定的父类

被继承的类称为超类父类
通过继承创建的类称为子类派生类

//定义一个动物类,作为父类
public class Animal{
	//子类不能访问private定义的属性和方法 
	private String name="我是父类的私有属性";
	//该属性子类会继承下来
	public int age;
	public String say(){
		System.out.println("我是父类的方法");
	}
	public void getAge(){
		System.out.println(this.age);
	}
}

创建一个新的class类继承Animal,子类继承父类

public class Cat extends Animal{
	public static void main(String[] agrs){
		//创建对象实例
		Cat cat=new Cat();
		//在Cat类中并没有定义say()方法,而是父类的方法
		cat.say();
		//报错,name属性是private权限的,不能被继承,会显示属性为定义错误
		cat.name="猫";
		//age是父类非private的属性,可以进行赋值
		cat.age=2;
		//检测父类的age是否发生了改变
		cat.getAge();//输出:2
	}
}

二、super的使用

super只能对非private的属性、方法、构造函数进行操作

1、super.函数名():子类重写父类的函数
2、super.属性名:子类重写父类的属性
3、super():在子类的构造方法中

public class A{
	//父类的属性
	String s="我是A类";
	//父类的构造方法
	public A(String s){
	}
	//父类的函数
	public void say(){
		System.out.println("我是父类的函数");
	}
}
public class B extends A{
	String s="我是B类";
	//默认情况下使用super()无参构造方法,但是父类不存在,所以会报错,重写构造函数则不会报错
	public B(String s){
		super(s);
	}
	//重写父类的方法,
	@Override
	public void say() {
		//子类的属性:输出我是B类
		System.out.println(s);
		//父类的属性:输出我是A类
		System.out.println(super.s);
		super.say();
	}
}

三、重载与多态

重载的定义
????1、在同一个类中可以定义相同名字的方法名,参数个数不同
????2、当参数个数相同时,参数类型必须不同
????3、与参数名、返回值、修饰符无关

举例如下:

public class Test{
	//以这个函数作为原型
	public void hello(){}
	//重载,函数名相同,参数个数不同
	public void hello(String name){}
	//重载,函数名相同,参数个数相同,但参数类型不一样
	public void hello(int id){}
	
	/*--------错误用法如下---------*/
	//报错,方法名、参数个数和参数类型都相同,就参数名不同,说明重载与参数名无关
	public void hello(String password){}
	//报错,多了一个修饰符static,但重载和修饰符无关
	public static void hello(){}
	//报错,重载与返回值无关
	public String hello(){return "";}
}	

多态的定义
????1、必须在继承的子类中
????2、方法名必须是父类已有的方法名,返回类型一致
????3、参数个数和参数类型和父类一致
多态的作用
????1、子类重写父类的方法,父类的方法被覆盖掉
????2、每一个子类可以共有一个父类的方法,却达到不同的行为

举例:

//定义一个类,让B类继承它
public class A{
	//定义一个父类的函数
	private	void hello(){
		System.out.println("Hello,我是父类的方法");
	}
}
public class B extends A{
	//多态,重写父类的方法
	public void hello(){
		System.out.println("Hello,我是子类的方法");
	}
	//这是重载,函数名相同,参数不同
	public void hello(String name){
		System.out.println("Hello,我是重载方法");
	}
}

四、抽象类

什么是抽象类?
抽象类是抽象的,可扩展的。由abstract修饰的类叫抽象类,抽象的类无法进行实例化(不能通过new产生对象)
抽象类的特点
????1、使用关键字abstract修饰的类
????2、抽象类不能实例化,也就是不能创建这个类的对象
????3、抽象类被继承后必须实现抽象方法,否则该类只能被定义成为抽象类。
????4、抽象类可以有方法,但继承的子类必须实现所有的抽象方法

//抽象类的定义
public abstract class Test{
	//抽象方法的定义,必须以分号结束,而不是{}
	public abstract void hello();
}

//继承抽象类的类
public class Dev extends Test{
	//必须实现抽象方法hello
	public void hello(){}
}
/*****两种报错方式****/
//报错,没有实现抽象方法
public class Dev extends Test{}

//报错,定义了抽象方法必须是抽象类
public class Dev extends Test{
	public abstract void hello();
}

上一篇: Java对象和类

下一篇: 正在更新中…

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章           查看所有文章
加:2021-07-11 16:30:26  更:2021-07-11 16:33:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 20:20:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码