• 继承的实现
  • 继承的限制
  • 子类对象的实例化
  • 方法的重写
  • Super关键字
  • 重写与重载的区别
  • final关键字
  • 抽象类
  • 接口

一、继承的实现

1.1 格式

	class 子类 extends 父类 {}
class Student extends Person{}

二、继承的限制

2.1 Java中只允许单继承

	class Student extends People,Worker {}
//error,不允许多继承(一个人只允许有一个亲生父亲)

2.2 子类不能直接访问父类的私有成员

需要用get及set方法实现访问

三、子类对象的实例化

必须先调用父类中的构造方法,再调用子类构造方法

四、方法的重写

4.1 定义

子类定义了与父类同名的方法(方法名称、返回值类型和参数均完全相同)

class Parent{
public void tell(){
System.out.println("Parent");
} }
class Sub extends Parent{
public void tell(){
System.out.println("Sub");
}
}
public class test { public static void main(String[] args)
{
Sub subFunc = new Sub();
subFunc.tell();
} }
OUTPUT: Sub

4.2 重写限制

被子类重写的方法不能拥有比父类更加严格的访问权限 (一般和父类一样即可)

private(更严格)<default<public

五、Super关键字

5.1强行调用父类的方法

若想调用父类同名方法——Super关键字

class Parent{
public void tell(){
System.out.println("Parent");
} }
class Sub extends Parent{
public void tell(){
super.tell();
System.out.println("Sub");
}
}
public class test { public static void main(String[] args)
{
Sub subFunc = new Sub();
subFunc.tell();
} }
OUTPUT:
Parent
Sub

5.2 Super不一定在重写中使用,也可以表示那些方法是从父类继承而来的(提高代码可读性)

六、重写与重载区别

七、Final关键字

7.1 用途: 完结、最终

使用final声明的类不能被继承;

使用final声明的方法不能被重写;

使用final声明的属性不能被修改(常量)。

八、抽象类

8.1 概念

抽象类:包含一个抽象方法的类(不能直接实例化对象,需通过其子类实例化对象)

抽象方法:声明而未被实现的方法(使用abstract关键字声明)

重写:抽象类被子类继承,子类(如果不是抽象类)必须重写并实现抽象类中所有抽象方法

abstract class Abs{
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public abstract void say();//抽象方法
}
class SubAbs extends Abs{
public void say(){ }
}
public class test { public static void main(String[] args)
{
SubAbs a = new SubAbs();
a.setAge(20);
} }

九、接口

9.1 概念

接口:特殊的类,全部由全局常量和公共抽象方法所组成

实现:接口必须通过子类实现(类比抽象方法),使用关键字implements

多实现:接口可以多实现(多继承,区分"类"的单继承)

9.2 格式

	interface interfaceName{
全局常量
抽象方法
}

9.3 一个子类可以同时继承抽象类和实现接口

	interface Inter1{
public static final int AGE = 100;
public abstract void tell();
}
interface Inter2{ public abstract void say();
} abstract class Abs1{
public abstract void print();
} class Sub extends Abs1 implements Inter1,Inter2{ //多继承(多实现)
public void tell(){}
public void say(){}
public void print(){ //一个子类可以同时继承抽象类和实现接口 }
}

9.4 接口的继承——相当于间接实现"类的多继承"

一个接口不能继承一个抽象类,但是可以通过extends关键字同时继承多个接口,实现接口的多继承

interface Inter1{
public static final int AGE = 100;
public abstract void tell();
}
interface Inter2{ public abstract void say();
} interface Inter3 extends Inter1,Inter2{ }

【JAVA语法】03Java-继承性的更多相关文章

  1. Java语法

    java语法: 一个java程序可以说是一系列对象的集合,而这些对象都要通过调用彼此的方法来协同工作. 对象: 对象是一个实例,例如:一只猫,它是一个对象,有状态和行为.它的状态状态有:颜色,名字,品 ...

  2. Java语法糖1:可变长度参数以及foreach循环原理

    语法糖 接下来几篇文章要开启一个Java语法糖系列,所以首先讲讲什么是语法糖.语法糖是一种几乎每种语言或多或少都提供过的一些方便程序员开发代码的语法,它只是编译器实现的一些小把戏罢了,编译期间以特定的 ...

  3. 程序员带你学习安卓开发,十天快速入-对比C#学习java语法

    关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到 ...

  4. Java语法基础(1)

    Java语法基础(1) 1.      Java是一门跨平台(也就是跨操作系统)语言,其跨平台的本质是借助java虚拟机 (也就是JVM(java virtual mechinal))进行跨平台使用. ...

  5. C++、Java语法差异对照表

    C++.Java语法差异对照表 C++ and Java Syntax Differences Cheat Sheet First, two big things--the main function ...

  6. jsp页面执行java语法,获取的值在页面调用

    首先在页面头引用用到类的包路径 写需要执行的java语法 页面转换引用 <!-- 引用包路径 --> <%@ page language="java" impor ...

  7. Java语法之反射

    一.反射机制 在前面Java语法之注解自定义注解时我们也有提到反射,要获取类方法和字段的注解信息,必须通过Java的反射技术来获取 Annotation对象.那什么是反射呢?JAVA反射机制是在运行状 ...

  8. Java语法知识总结

    一:java概述: 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒.PDA等的微处理器: 1994年将Oak语言更名为Java: ...

  9. Java语法糖设计

    语法糖 Java语法糖系列,所以首先讲讲什么是语法糖.语法糖是一种几乎每种语言或多或少都提供过的一些方便程序员开发代码的语法,它只是编译器实现的一些小把戏罢了,编译期间以特定的字节码或者特定的方式对这 ...

  10. 深入理解java虚拟机(十二) Java 语法糖背后的真相

    语法糖(Syntactic Sugar),也叫糖衣语法,是英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语.指的是,在计算机语言中添加某种语法,这些语法糖虽然不会对语言 ...

随机推荐

  1. AXI协议(一)

    最近弄Zynq,不懂AXI协议Zynq很难玩儿的转.这些笔记主要攻克AXI中的一些难题. 所有的AXI4包含了5个不同的通道:     (1)读/写地址通道(Read/Write address ch ...

  2. Shiro源码解析-Session篇

    上一篇Shiro源码解析-登录篇中提到了在登录验证成功后有对session的处理,但未详细分析,本文对此部分源码详细分析下. 1. 分析切入点:DefaultSecurityManger的login方 ...

  3. js计算日期相差天数

    日期不能直接相加减比较大小,需要转换一下然后计算最后转换成天,当然,你也可以根据同样类似的方法去转换成小时,或者月,年. function DateDiff(sDate1, sDate2) { //s ...

  4. 转载 Python 操作 MySQL 的正确姿势 - 琉璃块

    Python 操作 MySQL 的正确姿势 收录待用,修改转载已取得腾讯云授权 作者 |邵建永 编辑 | 顾乡 使用Python进行MySQL的库主要有三个,Python-MySQL(更熟悉的名字可能 ...

  5. C/C++中创建(带头结点、不带头结点的)单链表

    1.带头结点的单链表(推荐使用带头结点的单链表)(采用尾插法) 了解单链表中节点的构成 从上图可知,节点包含数据域和指针域,因此,在对节点进行定义时,我们可以如下简单形式地定义: /* 定义链表 */ ...

  6. 如何为 Vue 项目写单元测试

    https://www.w3ctech.com/topic/2052 如何为 Vue 项目写单元测试 前端工程 明非 2017-07-18 4685 访问 1 分享 微信分享 译者:明非 链接:htt ...

  7. springboot+redis实现缓存数据

    在当前互联网环境下,缓存随处可见,利用缓存可以很好的提升系统性能,特别是对于查询操作,可以有效的减少数据库压力,Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存 ...

  8. CSS ::Selection的使用方法

    大家都知道浏览器对选中的文本默认样式都是统一的,Windows下是一个深蓝色的背景,白字的前景,而在Mac下是一个淡蓝色背景,白色字体,就如上图所展示的一样,自从有了这个“::selection”选择 ...

  9. document.documentElement和document.body 与document.compatMode的关系

    首先我们看看document.compatMode(兼容模式): document.compatMode它有两种可能的返回值:BackCompat和CSS1Compat, document.compa ...

  10. 进入保护模式(二)——《x86汇编语言:从实模式到保护模式》读书笔记14

    首先来段题外话:之前我发现我贴出的代码都没有行号,给讲解带来不便.所以从现在起,我要给代码加上行号.我写博客用的这个插入代码的插件,确实不支持自动插入行号.我真的没有找到什么好方法,无奈之下,只能按照 ...