java新手笔记14 类继承示例
1.Person
package com.yfs.javase; public class Person { private String name;
private int age;
private char sex; private void privateMehtod() {
System.out.println("call privateMehtod()...");
} public Person() {
//System.out.println("创建Perosn对象...");
} public Person(String name) {
this.name = name;
} public Person(String name, int age, char sex) {
this.name = name;
this.age = age;
this.sex = sex;
} public void introduce() {
System.out.println("I am Person....");
} public String toString() {
return "姓名:" + name + " 年龄 :" + age + " 性别:" + sex;
} public void speak() {
System.out.println(name + " 工作了吗?");
} public void sleep() {
System.out.println(name + " 睡觉了吗?");
} public void eat() {
System.out.println(name + " 吃了吗?");
} 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 char getSex() {
return sex;
} public void setSex(char sex) {
this.sex = sex;
} }
2.Student
package com.yfs.javase; //实现代码重用 单继承
public class Student extends Person {// 继承Person private int score; @Override
public void introduce() {
System.out.println("I am student...");
}
// 覆盖 重写父类的方法
@Override
public String toString() {
return super.toString() + " 成绩:" + score;
} public int getScore() {
return score;
} public void setScore(int score) {
this.score = score;
} public Student() {
System.out.println("创建Student对象...");
} // 扩展方法
public void study() {
System.out.println(getName() + " 在学习...");
} }
3.Teacher
package com.yfs.javase; public class Teacher extends Person {
private String job; public String getJob() {
return job;
} public void setJob(String job) {
this.job = job;
} @Override
public void introduce() {
System.out.println("I am teacher...");
} }
4.test1
package com.yfs.javase; public class Demo1 { public static void main(String[] args) {
Person p1 = new Person();
p1.setName("张三"); Student s1 = new Student();
s1.setName("李四"); Teacher t1 = new Teacher();
t1.setName("王五"); p1.speak();
s1.speak();
s1.study();
t1.introduce(); //s1 = t1;//类型不匹配 都是person子类
//p1.study(); 子类的方法属性不能访问
//里氏替换
Person p2 = s1;//父类的引用指向子类对象 p2 = new Student();
p2.setName("Tom"); p2.sleep();
//对象操作由声明类型决定
//p2.study();//计算机技术人员
//具体执行由对象决定 p2 中具体是什么对象 p2 = new Teacher(); //多态 方法覆盖
p2.introduce();//父类声明的方法 子类覆盖父类的方法 } }
5.test2
package com.yfs.javase; public class Demo2 { public static void main(String[] args) {
Person p1 = new Person();
p1.setName("张三"); Student s1 = new Student();
s1.setName("李四"); Teacher t1 = new Teacher();
t1.setName("王五"); Person p2 = new Student();
p2.setName("Tom"); //变回去 强制转换
Student s2 = (Student)p2;
s2.study(); //Teacher t2 = (Teacher)p2; //查看对象的类型 getClass()
System.out.println(p2.getClass().getName());
System.out.println(t1.getClass().getName()); //s1 = p1;
p1 = s1;
System.out.println(p1);
System.out.println(s1);
s1.setAge(20);
p1.setSex('男');
System.out.println(p1);
System.out.println(s1);
//p1.study(); } }
java新手笔记14 类继承示例的更多相关文章
- java新手笔记9 类的封装示例
1.bank类 package com.yfs.javase; //类封装 public class BankCard { //属性 int balance;//默认0 实例变量 分配给每个对象一个 ...
- java新手笔记18 类比较
1.Shap类 package com.yfs.javase; public class Shape /*extends Object */{ //默认继承object object方法全部继承 // ...
- java新手笔记5 类
1.进制转换 /* 企业发放的奖金根据利润提成. 利润(I)低于或等于10万元时,奖金可提10%: 利润高于10万元,低于20万元时, 低于10万元的部分按10%提成,高于10万元的部分,可提成7.5 ...
- java新手笔记11 类的静态属性、方法(单例)
1.Person类 package com.yfs.javase; public class Person { String name;//每个对象上分配 与对象绑定 int age; char se ...
- JAVA自学笔记14
JAVA自学笔记14 1.正则表达式 1)是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串.其实就是一种规则.有自己的特殊应用 2)组成规则: 规则字符在java.util.rege ...
- c++中的类(class)-----笔记(类继承)
1,派生类继承了基类的所有成员函数和数据成员(构造函数.析构函数和操作符重载函数外). 2,当不指明继承方式时,默认为私有继承. 3,基类的私有成员仅在基类中可见,在派生类中是不可见的.基类的私有成员 ...
- Java学习笔记——File类之文件管理和读写操作、下载图片
Java学习笔记——File类之文件管理和读写操作.下载图片 File类的总结: 1.文件和文件夹的创建 2.文件的读取 3.文件的写入 4.文件的复制(字符流.字节流.处理流) 5.以图片地址下载图 ...
- Java学习笔记之---类和对象
Java学习笔记之---类和对象 (一)类 类是一个模板,它描述一类对象的行为和状态 例如:动物类是一个类,动物们都有属性:颜色,动物们都有行为:吃饭 public class Dog { Stri ...
- Java的对象与类,继承
Java的对象与类,继承 题目1.Java类的建立与使用 设计一个用来描述汽车的类,使用类的非静态成员变量来表示汽车的车主姓名.当前的速率和当前方向盘的转向角度,使用类的非静态成员方法来表示改变汽车的 ...
随机推荐
- vim+gdb+ddd+xxgdb精彩的程序调试
//-------------------------------------------------------------------------------------------------- ...
- c++ 派生类向基类转换的可访问性
对于c++面向对象一直很疑惑,这次决定下功夫把它弄明白 一.派生类和基类之间的类型转换 首先理解,派生类含有基类的所有成分,只不过有些就算在派生类的成员函数也不能访问而已. (1)派生类和基类的自动转 ...
- NOIP2000 进制转换
题一 进制转换 (18分) 问题描述 我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之 ...
- linux Grant 添加 MySql 用户
Grant 添加 MySql 用户 2009-04-03 14:40 我安装的版本: mysql> select version();+------------+| version() |+ ...
- 一分钟快速入门openstack
一.它是什么,能干什么想认识一个事物,必须先弄明白它是什么,能干什么.首先说一下,openstack是一个搭建云平台的一个解决方案,说他不是个软件,但是我觉得说是一个软件,能够让大家认识更清晰些.op ...
- Add And Reset a Federation Server to a Federation Server Farm adfs ad
Applies To: Active Directory Federation Services (AD FS) 2.0 After you install the Active Directory ...
- Redis以及Redis的php扩展安装无错版
安装Redis 下载最新的 官网:http://redis.io/ 或者 http://code.google.com/p/redis/downloads/list 第一步:下载安装编译 #wge ...
- Ⅹ.spring的点点滴滴--IObjectPostProcessor(对象后处理器)
承接上文 IObjectPostProcessor(对象后处理器) 前提是实现接口的对象注册给当前容器 C#: 通过继承AbstractObjectFactory对象的AddObjectPostPro ...
- $.post()请求 ation请求,jsp获取的处理结果
public void write(String content, String charset) { getHttpResponse().setCharacterEncoding(charset); ...
- 用来理解 Java 编程语言的 8 个图表
原文地址: http://www.oschina.net/news/44438/top-8-diagrams-for-understanding-java 很多时候,一张图比你说 1000 个字能更有 ...