No2_2.接口继承多态_Java学习笔记_继承
***类的继承***
1.继承的实现extends
2.[修饰符] class 子类名 extends 父类名{}
3.修饰符一般为:public abstract final
4.重写是指父子类之间的关系,子类的方法名与父类的方法名相,那么子类就不能继承父类的方法,称子类的方法重写了父类的方法。
5.重写体现了子类补充或者改变父类方法的能力。通过重写,可以使一个方法在不同的子类中表现出不同的行为;
6.重写民可以称为覆盖;
***使用super关键字***
1.子类可以继承父类的非私有成员变量和成员方法(非private)作为自己的成员变量和方法;
2.如果子类与父类成员变量同名,子类不能继承父类的成员变量,称:子类的成员变量隐藏了父类的成员变量;
3.如2.换成方法,称:子类成员方法重写了父类的成员方法;
4.这时,想在子类中访问父类中被隐藏的成员方法或变量,就可以用super;
5.两种用途:
a.调用父类的构造方法;子类可以调用由父类声明的构造方法,必须使用super调用;【必须写在构造方法体中吗???是的】
super([参数列表]);
应该为构造函数中的第一条语句;
b.操作被隐藏的成员变量和被重写的成员方法;
super.成员变量名
super.成员方法名([参数列表])
问题:super. 可以不在构造方法中使用吗,可以。但应该是写在方法体中的
import java.util.Date;
import java.util.Locale; /**
* @author: liu_y
* @Date: 2016年7月3日
* @Title:继承、继承中的重写
*/
/********** 继承的实现 **************/ class Bird {
String color = "white";
String skin = "羽毛";
} class Pigeon extends Bird {
public void pColor() {
Pigeon p = new Pigeon();
System.out.println("鸽子继承的鸟类的属性,颜色是:" + p.color);
}
} /********** 继承中的重写 **************/
class Animal {
public Animal() {
} public void cry() {
System.out.println("动物发出叫声!");
}
} class Dog extends Animal {
public Dog() {
} public void cry() {
System.out.println("狗发出“汪汪汪”的叫声!");
}
} class Cat extends Animal {
public Cat() {
} public void cry() {
System.out.println("罗小黑发出“喵喵喵”的叫声!");
}
} class Sheep extends Animal { } /********** 使用super关键字 **************/
class Beast {
String skin;
int age=77; //父类成员变量,赋值是77
public Beast() { } public Beast(String skin) {
this.skin = skin;
this.age=55; //调用父类的构造方法后,赋值为55。不调用就77
} public void move() {
System.out.println("跑");
} public String getSkin() {
return skin;
}
} class Tiger extends Beast {
private int age; public Tiger() {
super("条纹"); //调用父类的构造方法,一定要放在方法的首个语句!!
age = 33;
super.age = 88; // 在子类中修改父类Beast的成员变量的值
super.move(); // 在子类中调用父类Beast的成员方法(需要写在方法体中,不一定构造方法)
} public int getSuperAge() {
return super.age;
}
public int getAge(){
return age;
}
} /********** 范例:经理与员工的差异 **************/
class Employee{
private String name;
private int age;
private Date birthday;
private double salary;
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age=age;
}
public int getAge(){
return age;
}
public void setBirthday(Date birthday){
this.birthday=birthday;
}
public Date getBirthday(){
return birthday;
}
public void setSalary(double salary){
this.salary=salary;
}
public double getSalary(){
return salary;
} public String getInfo(){
return "我是父类:我是jm的员工~~";
}
} class Manager extends Employee{
private double bonus; //经理有奖金的哟
public void setBonus(double bonus){
this.bonus=bonus;
}
public double getBonus(){
return bonus;
} @Override //重写getInfo()
public String getInfo(){
return "我是子类:我是jm的工程师~~";
} } public class Hello2Extends { public static void main(String[] args) {
// TODO Auto-generated method stub
//继承的实现
System.out.println("继承的实现:");
Pigeon p=new Pigeon();
p.pColor(); //继承中的重写
System.out.println("\n继承中的重写");
Dog dog=new Dog();
Cat cat=new Cat();
Sheep sheep=new Sheep();
System.out.println("执行dog.cry()时的输出结果:");
dog.cry();
System.out.println("执行cat.cry()时的输出结果:");
cat.cry();
System.out.println("执行sheep.cry()时的输出结果:");
sheep.cry(); //使用super关键字
System.out.println("\n使用super关键字");
Tiger tiger=new Tiger();
System.out.println("老虎的皮肤是:"+tiger.getSkin()+";父类年龄是:"+tiger.getSuperAge());
System.out.println("老虎的皮肤是:"+tiger.getSkin()+";父类年龄是:"+tiger.getAge()); // 范例:经理与员工的差异
Employee employee=new Employee();
employee.setName("Sunshine");
employee.setAge(28);
employee.setBirthday(new Date());
employee.setSalary(3000); Manager manager=new Manager();
manager.setAge(30);
manager.setName("Liuliu");
manager.setBirthday(new Date());
manager.setSalary(5000);
manager.setBonus(2577.88);
System.out.println("员工的个人信息:"+employee.getName()+" "+String.format(Locale.CHINA,"%tF",new Date())
+" "+employee.getSalary());
System.out.println("经理的个人信息:"+manager.getName()+" "+manager.getAge()+" "+manager.getSalary()+" "+manager.getBonus()); //范例 重写父类中的方法
System.out.println("\n重写父类中的方法");
System.out.println(employee.getInfo());
System.out.println(manager.getInfo());
}
}
输出结果:
继承的实现:
鸽子继承的鸟类的属性,颜色是:white 继承中的重写
执行dog.cry()时的输出结果:
狗发出“汪汪汪”的叫声!
执行cat.cry()时的输出结果:
罗小黑发出“喵喵喵”的叫声!
执行sheep.cry()时的输出结果:
动物发出叫声! 使用super关键字
跑
老虎的皮肤是:条纹;父类年龄是:88
老虎的皮肤是:条纹;父类年龄是:33
员工的个人信息:Sunshine 2016-07-04 3000.0
经理的个人信息:Liuliu 30 5000.0 2577.88 重写父类中的方法
我是父类:我是jm的员工~~
我是子类:我是jm的工程师~~
No2_2.接口继承多态_Java学习笔记_继承的更多相关文章
- No2_1.接口继承多态_Java学习笔记_接口
接口.继承与多态 1.继承和多态是面向对象开发语言中的重要一个环节,使用得当,可以将整个程序的架构变得非常有弹性,减少代码冗余: 2.继承:复用定义好的类: 3.多态:可以动态调整对象的调用,降低对象 ...
- No2_4.接口继承多态_Java学习笔记_经典案例
import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Collections; import jav ...
- No2_3.接口继承多态_Java学习笔记_多态
***多态***1.多态性:通常使用方法的重载(Overloading)和重写(Overriding)实现类的多态:2.重写之所以具有多态性,是因为父类的方法在子类中被重写,方法名相同,实现功能不同. ...
- No2_5.类的高级特性_Java学习笔记_抽象类和成员内部类
一.抽象类1.所谓抽象类,只声明方法的存在而不去实现它的类:2.抽象类不能被实例化,即不能实现其对象:3.abstract class 类名{ 类体 }4.包含一个或多个抽象方法的类必须声明成抽象类: ...
- c++学习笔记之继承篇
title: c++学习笔记之继承篇 date: 2017-03-26 16:36:33 tags: [c++,继承,public,virtual,private,protected] categor ...
- jQuery源代码学习笔记_工具函数_noop/error/now/trim
jQuery源代码学习笔记_工具函数_noop/error/now/trim jquery提供了一系列的工具函数,用于支持其运行,今天主要分析noop/error/now/trim这4个函数: 1.n ...
- C++学习笔记 封装 继承 多态 重写 重载 重定义
C++ 三大特性 封装,继承,多态 封装 定义:封装就是将抽象得到的数据和行为相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成类,其中数据和函数都是类的成员,目的在于将对 ...
- 0022 Java学习笔记-面向对象-继承、多态、组合
继承的特点 单继承:每个子类最多只有一个直接父类,注意是直接父类,间接父类个数不限 注意父类的概念:A-->B-->C-->D,在这里,ABC都是D的父类,C是D的直接父类,AB是D ...
- java学习笔记_接口
接口:interface(关键字) public interface USB {} 1. 接口中都是抽象方法,方法前面的可见度(public.private)和抽象关键字(abstract)可以不写. ...
随机推荐
- 搭建Nuget
1. 新建一个 ASP.NET 空Web应用程序 2. 在新建的项目中引用 安装 NuGet.Server 2.1 右键项目中的引用,出现一个“管理NuGet程序包(N)”,点击进入 2.2 在搜 ...
- php简单的爬虫
爬虫的原理是分析下载的页面,找出其中的连接,然后再下载这些链接,对链接再进行更深层次的递归,周而复始.在数据存储方面,先存储到redis里面,再有redis 写入到mysql,这样可以减轻mysql写 ...
- sublime text3 安装package control
20141104日更新的安装代码为 import urllib.request,os,hashlib; h = '7183a2d3e96f11eeadd761d777e62404' + 'e330c6 ...
- Repeater绑定数据库
前台: <table width="> <tr> <td class="tr1"> <asp:Label Text=" ...
- Python学习笔记总结(二)函数和模块
一.函数 函数的作用:可以计算出一个返回值,最大化代码重用,最小化代码冗余,流程的分解. 1.函数相关的语句和表达式 语句 例子 Calls myfunc(‘diege', ...
- MySQL的SQL_CALC_FOUND_ROWS真的很慢么?
分页程序一般由两条SQL组成: SELECT COUNT(*) FROM ... WHERE .... SELECT ... FROM ... WHERE LIMIT ... 如果使用SQL_CALC ...
- Linux Shell逻辑运算符和表达式详解
Shell 逻辑运算符涉及以下几种类型,只要适当选择,可以解决我们很多复杂的判断,达到事半功倍效果. 一.逻辑判断1.关于文件与目录的逻辑判断-f 常用.判断『文件』是否为普通文件,比如: if [ ...
- AspNetPager实现真分页+多种样式
真假分页 分页是Web应用程序中最常用到的功能之一.当从数据库中获取的记录远远超过界面承载能力的时候,使用分页可以使我们的界面更加美观,更加的用户友好.分页包括两种类型:真分页和假分页. 其中假分页就 ...
- osip及eXosip的编译方法
osip及eXosip的编译方法 在最新版本的osip2.exosip2中不支持在VC6.0下编译osip.exosip协议栈的方法 说明: 1.以下文章中的osip版本为3.1.0 2.eXosip ...
- UVA11456--dp,LIS
这道题是个不错的dp题,可以放在区域赛签到题或者铜牌题. 这题希望火车序列最长,我们可以想到,如果一辆车ai如果能被放上去,先不管之前放上了多少辆车,以及这辆车是什么时候放上去的,但是我们可以确定的是 ...