Java面向对象-Java类的继承及super关键字
Java面向对象-Java类的继承
1,继承定义以及基本使用
定义:子类能够继承父类的属性和方法;
注意点:Java中只支持单继承;
私有方法不能继承;
上代码:
package com.java1234.chap03.sec09; /**
* 动物类
* @author user
*
*/
public class Animal { private String name; // 姓名
private int age; // 年龄 public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
} public void say(){
System.out.println("我是一个动物,我叫:"+this.name+",我的年龄是:"+this.age);
}
}
我们定义一个Animal类 定义两个私有属性 name和age 然后给出共有的set get接口 以及一个共有的say()方法;
package com.java1234.chap03.sec09; /**
* 定义Dog类,继承自Animal类
* @author user
*
*/
public class Dog extends Animal{ public static void main(String[] args) {
Dog dog=new Dog();
dog.setName("Pick");
dog.setAge(1);
dog.say();
}
}
我们再定义一个Dog类 通过extends关键字 继承Animal类;
我们实际上把父类Animal的共有方法get set以及say()方法都继承了;
运行输出:
我是一个动物,我叫:Pick,我的年龄是:1
2,方法重写
所谓方法的重写 我们可以在子类中根据实际业务把父类的方法重写;
上代码:
package com.java1234.chap03.sec09; /**
* 定义一个Cat类,继承自Animal
* @author user
*
*/
public class Cat extends Animal{ /**
* 重写父类的say方法
*/
public void say(){
System.out.println("我是一个猫,我叫:"+this.getName()+",我的年龄是:"+this.getAge());
} public static void main(String[] args) {
Cat cat=new Cat();
cat.setName("Mini");
cat.setAge(2);
cat.say();
}
}
这里 我们重写父类的say方法 改成 是猫 以及用getName和getAge,因为当前对象里继承不到父类的私有字段;
运行输出:
我是一个猫,我叫:Mini,我的年龄是:2
3,对象实例过程以及super关键字
对象实例化 先实例化调用父类构造方法,再调用子类实例化构造方法;
super关键字主要是调用父类方法或者属性;
我们修改下上面的实例:
package com.java1234.chap03.sec09; /**
* 动物类
* @author user
*
*/
public class Animal { private String name; // 姓名
private int age; // 年龄 /**
* 无参父类构造方法
*/
public Animal() {
System.out.println("无参父类构造方法");
} /**
* 有参父类构造方法
* @param name 姓名
* @param age 年龄
*/
public Animal(String name,int age) {
System.out.println("有参父类构造方法");
this.name=name;
this.age=age;
} public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
} public void say(){
System.out.println("我是一个动物,我叫:"+this.name+",我的年龄是:"+this.age);
}
}
package com.java1234.chap03.sec09; /**
* 定义一个Cat类,继承自Animal
* @author user
*
*/
public class Cat extends Animal{ private String address; public String getAddress() {
return address;
} public void setAddress(String address) {
this.address = address;
} public Cat() {
super();
System.out.println("子类无参构造方法");
} public Cat(String name, int age,String address) {
super(name, age);
this.address=address;
System.out.println("子类有参构造方法");
} /**
* 重写父类的say方法
*/
public void say(){
super.say(); // 调用父类的say()方法
System.out.println("我是一个猫,我叫:"+this.getName()+",我的年龄是:"+this.getAge()+",我来自:"+this.getAddress());
} public static void main(String[] args) {
Cat cat=new Cat("Mini",2,"火星");
/*cat.setName("Mini");
cat.setAge(2);*/
cat.say();
}
}
运行输出:
有参父类构造方法
子类有参构造方法
我是一个动物,我叫:Mini,我的年龄是:2
我是一个猫,我叫:Mini,我的年龄是:2,我来自:火星
Java面向对象-Java类的继承及super关键字的更多相关文章
- Java面向对象(二、继承)
Java 继承 继承的概念 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法 ...
- Java 面向对象,封装,继承
1相关概念的理解 1.1面向过程.面向对象 面向过程与面向对象都是编程中,编写程序的一种思维方式. 面向过程的程序设计方式,是遇到一件事时,思考“我该怎么做”,然后一步步实现的过程.(职员思想) 面向 ...
- java面向对象(封装,继承,多态,抽象,接口的定义和实现)
1.封装 在面向对象程式设计方法中,封装(英语:Encapsulation)是指,一种将抽象性函式接口的实作细节部份包装.隐藏起来的方法. 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定 ...
- Java面向对象三大特点之继承
概念: 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为. 生活中的继承: 兔子和羊属于食草动物类,狮子和豹属于食肉动物类 ...
- Java面向对象 Object类 内部类
Java面向对象 Object类 内部类 知识概要: 一:Object类 二:内部类 匿名内部类的写法 1.Object O ...
- “全栈2019”Java第四十五章:super关键字
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 关于Python中的类普通继承与super函数继承
关于Python中的类普通继承与super函数继承 1.super只能用于新式类 2.多重继承super可以保公共父类仅被执行一次 一.首先看下普通继承的写法 二.再看看super继承的写法 参考链接 ...
- php面向对象:类的继承实例讲解
什么是类的继承?说白了,我觉得就是提高代码使用效率的.下面我就给大家介绍下继承.大理石平台维修 类的继承概念 子类继承父类的所有成员变量个方法,包括构造方法,当子类被实例化时,php会现在子类中查询构 ...
- -1-2 java 面向对象基本概念 封装继承多态 变量 this super static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口 区别 多态 包 访问权限 内部类 匿名内部类 == 与 equal
java是纯粹的面向对象的语言 也就是万事万物皆是对象 程序是对象的集合,他们通过发送消息来相互通信 每个对象都有自己的由其他的对象所构建的存储,也就是对象可以包含对象 每个对象都有它的类型 也就是 ...
随机推荐
- jdbc之防sql注入攻击
1.SQL注入攻击: 由于dao中执行的SQL语句是拼接出来的,其中有一部分内容是由用户从客户端传入,所以当用户传入的数据中包含sql关键字时,就有可能通过这些关键字改变sql语句的语义,从而执 ...
- Android性能调优实例
本文主要分享自己在appstore项目中的性能调优点,包括同步改异步.缓存.Layout优化.数据库优化.算法优化.延迟执行等. 目前性能优化专题已完成以下部分: 性能优化总纲——性能问题及性能调优方 ...
- Android实现网易新闻客户端效果
下面来简单实现一下网易新闻客户端左右切换的效果,当然实际项目上肯定不能这样写,还有很多需要优化的地方. activity_main.xml [html] view plaincopyprint? &l ...
- Flask中的ORM使用
前言 ORM拓展 安装 数据库设置 使用 关系 单表操作 建表 应用表结构 CRUD 添加查找操作 更新操作 删除操作 一对多 多对多 总结 前言 最近几天接触了一下Flask,在惊叹于其简洁性的同时 ...
- MarkDown小技巧
MarkDown编辑 MarkDown编辑的时候,可以直接插入HTML的编辑手法. 例如如果想要将一段话中的某一个或者某几个字设为其他颜色,但又不想将这几个字与这段话分割的时候,可以这样 你可以这样将 ...
- Linux系统中的wc
Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数.字数.行数,并将统计结果显示输出. 1.命令格式: wc [选项]文件... 2.命令功能: 统计指定文件中的字节数. ...
- python学习之准备
快速入门:十分钟学会Pythonhttp://python.jobbole.com/43922/python框架http://www.elias.cn/Python/HomePage#toc14[Py ...
- netcat 瑞士军刀
netcat被誉为网络安全界的‘瑞士军刀’,一个简单而有用的工具,透过使用TCP或UDP协议的网络连接去读写数据.它被设计成一个稳定的后门工具,能够直接由其它程序和脚本轻松驱动.同时,它也是一个功能强 ...
- ACM学习历程—TopCoder SRM691 Div2
这是我的第一次打TC,感觉打的一般般吧.不过TC的题目确实挺有意思的. 由于是用客户端打的,所以就不发题目地址了. 300分的题: 这题大意是有一段序列只包含+和数字0~9. 一段序列的操作是,从头扫 ...
- 3145 code[VS]汉诺塔游戏--递归
3145 汉诺塔游戏 题目描述 Description 汉诺塔问题(又称为河内塔问题),是一个大家熟知的问题.在A,B,C三根柱子上,有n个不同大小的圆盘(假设半径分别为1-n吧),一开始他们都叠在我 ...