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)可以不写. ...
随机推荐
- JS全部API笔记
我相信对于程序猿都有做笔记的习惯. 我初学到现在也做了不少笔记,以前,总是怕写的文章或者好的内容分享出来就怕被直接copy以后更个名就不再是你的. 但通过博客园,学习到不少东西,人家都不怕什么了,我自 ...
- dede调用指定的多个栏目导航
{dede:channelartlist row=' typeid='1,2这里输入多个指定的栏目ID' } <li><a href='{dede:field name='typeu ...
- C#文本文件导入数据库
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windo ...
- Java学习笔记--对象克隆
转自:Edward_qing_Lee 的专栏 http://blog.csdn.net/edward_qing_lee/article/details/8249102 一.java 方法参数 理解: ...
- maven POM.xml 标签详解
pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述了项目:包括配置文件:开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以 ...
- [UVALive] 6492 Welcome Party(最小点覆盖)
6492 Welcome Party For many summers, the Agile Crystal Mining company ran an internship program for ...
- document.readystate
http://www.cnblogs.com/lhb25/archive/2009/07/30/1535420.html http://www.cnblogs.com/haogj/archive/20 ...
- Codeforces 449D Jzzhu and Numbers
http://codeforces.com/problemset/problem/449/D 题意:给n个数,求and起来最后为0的集合方案数有多少 思路:考虑容斥,ans=(-1)^k*num(k) ...
- tyvj1039忠诚2
描述 Description 老管家是一个聪明能干的人.他为财主工作了整整10年,财主为了让自已账目更加清楚.要求管家每天记k次账,由于管家聪明能干,因而管家总是让财主十分满意.但是由于一些人的挑拨, ...
- list 操作
animals = ["aardvark", "badger", "duck", "emu", "fennec ...