Java 读书笔记 (十六) Java 继承
例:
开发动物类,其中动物分别为企鹅以及老鼠,要求如下:
- 企鹅: 属性(姓名,id), 方法(吃,睡,自我介绍)
- 老鼠: 属性(姓名,id), 方法(吃,睡,自我介绍)
企鹅类:
public class Penguin{
private String name;
private int id;
public Penguin(String myName, int myid){
name = myName;
id = myid;
}
public void eat(){
System.out.println(name+"正在吃");
}
public void sleep(){
System.out.println(name+"正在睡");
}
public void introduction(){
System.out.println("大家好!我是" +id+"号"+name+".");
}
}
老鼠类:
public class Mouse{
private String name;
private int id;
public Mouse(String myName, int myid){
name = myName;
id = myid;
}
public void eat(){
System.out.println(name+"正在吃");
}
public void sleep(){
System.out.println(name+"正在睡");
}
public void introduction(){
System.out.println("大家好!我是" +id+"号"+name+".");
}
}
要解决上述两段代码重复的问题,需要继承,将两段代码中相同的部分提取出来组成一个父类。
公共父类:
将Animal类作为一个父类,然后企鹅类和老鼠类继承这个类之后,就具有父类当中的属性和方法。
public class Animal{
private String name;
private int id;
public Animal(String myName, int myid){
name = myName;
id = myid;
}
public void eat(){
System.out.println(name+"正在吃");
}
public void sleep(){
System.out.println(name+"正在睡");
}
public void introduction(){
System.out.println("大家好!我是" +id+"号"+name+".");
}
}
继承之后的代码:
//企鹅类:
public class Penguin extends Animal{
public Penguin(String myName,int myid){
super(myName, myid);
}
} //老鼠类:
public class Mouse extends Animal{
public Mouse(String myName,int myid){
super(myName, myid);
}
}
继承关键字
继承可以使用extends和implements两个关键字来实现继承,而且所有的类都是继承于java.lang.Object,当一个类没有继承的两个关键字,则默认继承object(这个类在java.lang包中,所以不需要import)祖先类。
extends关键字
在Java中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类,所以extends只能继承一个类。
public class Animal{
private String name;
private int id;
public Animal(String myNumber, String myid){
//初始化属性值
}
public void eat(){ //吃东西方法的具体实现}
public void sleep(){ //睡觉方法的具体实现}
}
public class Penguin extends Animal{
}
super 与this 关键字
super关键字: 通过super 关键字来实现对父类成员的访问,用来引用当前对象的父类。 //那对于父类的父类,该用什么关键字?
this关键字: 指向自己的引用。//调用自己的方法
final 关键字
final声明类可以把类定义为不能继承的,即最终类;或者用于修饰方法,该方法不能被子类重写。
- 声明类:
final class 类名{//类体}
- 声明方法:
修饰符(public /private/default /protected) final 返回值类型 方法名(){//方法体}
构造器
子类不能继承父类的构造器(构造方法或构造函数),但是父类的构造器带有参数的,则必须在子类的构造器中显式地通过super关键字调用父类的构造器并配以适当的参数列表。 //不能继承却能调用? 什么意思? super的访问到底是访问的什么?只访问属性?
Java 读书笔记 (十六) Java 继承的更多相关文章
- Java 读书笔记 (十五) Java 异常处理
捕获异常 使用try 和catch关键字可以捕获异常.try/catch 代码块放在异常可能发生的地方. try/catch 代码块中的代码称为保护代码 ,使用try/catch的语法如下: try ...
- Java 读书笔记 (十四) Java 方法
finalize() 方法 finalize() 用来清除回收对象. //为什么要回收内存?怎样写可以避免内存过多占用?什么时候需要手动回收内存? protected void finalize() ...
- Java 读书笔记 (十二) Java Character 类
在实际开发过程中, 我们经常会遇到需要使用对象,而不是内置数据类型的情况. 为了解决这个问题, Java语言为内置数据类型char提供了包装类Character类. 可以使用Character的构造方 ...
- Java学习笔记十六:Java中的构造方法
Java中的构造方法 1.使用new+构造方法 创建一个新的对象: 2.构造方法是定义在Java类中的一个用来初始化对象的方法: 3.构造方法与类同名且没有返回值: 4.语法格式: public 构造 ...
- Java 学习笔记 ------第六章 继承与多态
本章学习目标: 了解继承的目的 了解继承与多态的关系 知道如何重新定义方法 认识java.lang.object 简介垃圾回收机制 一.继承 继承是java面向对象编程技术的一块基石,因为它允许创建分 ...
- Java 读书笔记 (十) 循环
while循环 只要布尔表达式为true,循环就一直执行下去. public class Test( public static void main(String args[]){ int x=10; ...
- Java学习笔记十九:Java中的访问控制修饰符
Java中的访问控制修饰符 一:Java修饰符的种类: 访问修饰符 非访问修饰符 修饰符用来定义类.方法或者变量,通常放在语句的最前端.我们通过下面的例子来说明: public class Hello ...
- Java学习笔记十八:Java面向对象的三大特性之封装
Java面向对象的三大特性之封装 一:面向对象的三大特性: 封装 继承 多态 二:封装的概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访 ...
- Java学习笔记十五:Java中的成员变量和局部变量
Java中的成员变量和局部变量 一:成员变量: 成员变量在类中定义,用来描述对象将要有什么 成员变量可以被本类的方法使用,也可以被其他类的方法使用,成员变量的作用域在整个类内部都是可见的 二:局部变量 ...
随机推荐
- 字符编辑技术C语言实现
#include<string.h> #include<ctype.h> #include<stdio.h> /*插入函数 ccode待插入的字符 anystrin ...
- 杭电ACM 1001题
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc=ne ...
- angular1.0 app
angular 1.0 简单的说一下就是ng启动阶段是 config-->run-->compile/link config阶段是给了ng上下文一个针对constant与provider修 ...
- 代码托管工具 git
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 } p. ...
- oracle超出打开游标的最大数的原因和解决方案
oracle超出打开游标的最大数的原因和解决方案 分类: Oracle相关2012-06-05 10:36 6362人阅读 评论(0) 收藏 举报 oracle数据库sqljavasessionsys ...
- 关于MVC的特性(AuthorizeAttribute)的一些理解
许多 Web 应用程序要求在用户登录之后才授予其对受限制内容的访问权限. 在某些应用程序中,即使是登录的用户,也会限制他们可以查看的内容或可以编辑的字段. 要限制对 ASP.NET MVC 视图的访问 ...
- 彪悍开源的分析数据库-ClickHouse
https://zhuanlan.zhihu.com/p/22165241 今天介绍一个来自俄罗斯的凶猛彪悍的分析数据库:ClickHouse,它是今年6月开源,俄语社区为主,好酒不怕巷子深. 本文内 ...
- python argparse用法总结
转:python argparse用法总结 1. argparse介绍 argparse是python的一个命令行解析包,非常适合用来编写可读性非常好的程序. 2. 基本用法 prog.py是我在li ...
- 使用Rapidxml读取xml文件
现有xml文件如上,写在一个string中.需要获取节点上元素的类别和属性信息,并存储到结构体表中. 结构体如下: 得到的结果如下:
- MVC-AOP思想-Filter 三种注册方式
在ASP.NET MVC框架中,为我们提供了四种类型的Filter类型包括:IAuthorizationFilter.IActionFilter.IResultFilter.IExceptionFil ...