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)可以不写. ...
随机推荐
- jquery的.detach()方法
.detach()就是从DOM中删除所有匹配的元素. 与.remove()方法不同的是, 这个方法不会把匹配的元素从jQuery对象中删除,所有绑定的事件.附加的数据等都会保留下来,因而可以在将来再使 ...
- php 图片上传预览(转)
网上找的图片上传预览: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/ ...
- 我和小美的撸码日记(2)之第一个基于MVC+Jqgrid的列表页面
一.前言 “尼玛哥,上周你教我改了下OA系统UI,黄总看了很满意呀.” “不错不错,看来小美进步很大,可以提前结束试用期,到时候加工资别忘了请我吃饭呀!” “尼玛哥,你有女朋友了吗?” “ ...
- .NET知识点总结一(笔记整合)
1. .net framework原理简介,C#程序的两次编译 .NET源代码——>语言编译器(第一次编译)——>MSIL+元数据(exe文件)——>CLR(公共语言运行时——类 ...
- IOS内存nil与release的区别
IOS内存nil与release的区别 分类: IOS内存管理 nil和release的作用: nil就是把一个对象的指针置为空,只是切断了指针与内存中对象的联系:而release才是真正通知 ...
- iOS开发中文件的上传和下载功能的基本实现-备用
感谢大神分享 这篇文章主要介绍了iOS开发中文件的上传和下载功能的基本实现,并且下载方面讲到了大文件的多线程断点下载,需要的朋友可以参考下 文件的上传 说明:文件上传使用的时POST请求,通常把要上传 ...
- Linux 删除空行
在Linux上处理一些数据文件时,有时候需要将其中的空行过滤掉,系统中提供的各种工具都可以完成这个功能.将常用的介绍如下吧:1. grep grep . data.txt grep -v '^$' d ...
- /sbin/ifup: configuration for eth0 not found解决
/sbin/ifup: configuration for eth0 not found. Usage: ifup <device name> 那么应该是在/etc/sysconfig/n ...
- SIP学习之网络链接
风清扬的CSDN博客 文章分类SIP http://blog.csdn.net/ppy521/article/category/1227390
- iOS 8 自适应 Cell
在使用 table view 的时侯经常会遇到这样的需求:table view 的 cell 中的内容是动态的,导致在开发的时候不知道一个 cell 的高度具体是多少,所以需要提供一个计算 cell ...