***类的继承***
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学习笔记_继承的更多相关文章

  1. No2_1.接口继承多态_Java学习笔记_接口

    接口.继承与多态 1.继承和多态是面向对象开发语言中的重要一个环节,使用得当,可以将整个程序的架构变得非常有弹性,减少代码冗余: 2.继承:复用定义好的类: 3.多态:可以动态调整对象的调用,降低对象 ...

  2. No2_4.接口继承多态_Java学习笔记_经典案例

    import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Collections; import jav ...

  3. No2_3.接口继承多态_Java学习笔记_多态

    ***多态***1.多态性:通常使用方法的重载(Overloading)和重写(Overriding)实现类的多态:2.重写之所以具有多态性,是因为父类的方法在子类中被重写,方法名相同,实现功能不同. ...

  4. No2_5.类的高级特性_Java学习笔记_抽象类和成员内部类

    一.抽象类1.所谓抽象类,只声明方法的存在而不去实现它的类:2.抽象类不能被实例化,即不能实现其对象:3.abstract class 类名{ 类体 }4.包含一个或多个抽象方法的类必须声明成抽象类: ...

  5. c++学习笔记之继承篇

    title: c++学习笔记之继承篇 date: 2017-03-26 16:36:33 tags: [c++,继承,public,virtual,private,protected] categor ...

  6. jQuery源代码学习笔记_工具函数_noop/error/now/trim

    jQuery源代码学习笔记_工具函数_noop/error/now/trim jquery提供了一系列的工具函数,用于支持其运行,今天主要分析noop/error/now/trim这4个函数: 1.n ...

  7. C++学习笔记 封装 继承 多态 重写 重载 重定义

    C++ 三大特性 封装,继承,多态 封装 定义:封装就是将抽象得到的数据和行为相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成类,其中数据和函数都是类的成员,目的在于将对 ...

  8. 0022 Java学习笔记-面向对象-继承、多态、组合

    继承的特点 单继承:每个子类最多只有一个直接父类,注意是直接父类,间接父类个数不限 注意父类的概念:A-->B-->C-->D,在这里,ABC都是D的父类,C是D的直接父类,AB是D ...

  9. java学习笔记_接口

    接口:interface(关键字) public interface USB {} 1. 接口中都是抽象方法,方法前面的可见度(public.private)和抽象关键字(abstract)可以不写. ...

随机推荐

  1. c#解析XML和JSON

    http://guwei4037.blog.51cto.com/3052247/1344190  

  2. 浅析JavaScript和PHP中三个等号(===)和两个等号(==)的区别

    先做个简单的介绍,让先有个直观的认识 == equality 等同 === identity 恒等 == 两边值类型不同的时候,要先进行类型转换,再比较. === 不做类型转换,类型不同的一定不等. ...

  3. Decimal:解决0.3 != 0.1+0.1+0.1的方法(十进制浮点数)

    0.普通情况 1.引入Decimal 也可以这样引入: from decimal import Decimal as D 相当于: from decimal import Decimal D = De ...

  4. C语言初学 计算三角形面积问题

    #include<stdio.h> #include<math.h> #include<stdlib.h> int main() { float a,b,c,s,a ...

  5. commons-logging log4j的联系区别

    1.Apache通用日志接口(commons-logging.jar)介绍 Apache Commons包中的一个,包含了日志功能,必须使用的jar包.这个包本身包含了一个Simple Logger, ...

  6. 在O(1) 时间删除链表节点

    struct Node { int val; Node * next; }; void deleteNode(Node ** head, Node * target) { assert(head != ...

  7. IntelliJ IDEA: maven & jetty 开发 java web

    之前使用eclipse + maven + jetty开发java web应用,本着no zuo no gain的想法, 折腾了一下Intellj idea下开发环境的搭建,顺带学习了maven re ...

  8. SQLite数据库安装与使用

    SQLite是遵守ACID的关系数据库管理系统,它包含在一个相对小的C库中.它是D.RichardHipp创建的公有领域项目. 不像常见的客户端/服务器结构范例,SQLite引擎不是个程序与之通信的独 ...

  9. SQL SERVER 系统存储过程

    Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. Ø ...

  10. 20个最强的基于浏览器的在线代码编辑器 - OPEN资讯

    20个最强的基于浏览器的在线代码编辑器 - OPEN资讯 20个最强的基于浏览器的在线代码编辑器